PDA

View Full Version : گرفتن همه فرزندان ( زیر شاخه های ) یک پدر



azam2005
شنبه 10 تیر 1391, 09:51 صبح
گرفتن همه فرزندان ( زیر شاخه های ) یک پدر
من می خواهم با گرفتن GroupID پدر ، همه فرندان آن GroupID (که دارای زیر شاخه نامحدود است) برگردانده شود چطوری با دستورات اس کیو ال این اطلاعات را بگیرم ورودی GroupID =1 و خروجی =2و3و4و5و6
در حقیقت می خواهم وقتی گروه کاربری یک شخص را به سیستم می دهم همه گروه کاربری های زیر مجموعه آن شخص را که به صورت درختی ثبت شده برگردانده شود.
و شخص به زیر شاخه های زیر دستش دسترسی داشته باشد.


GroupID parentGroupID
0 1
1 2
1 3
2 4
2 5
3 6

baktash.n81@gmail.com
شنبه 10 تیر 1391, 16:52 عصر
سلام

برای اینکار شما باید از CTE استفاده کنید ... به این صورت که یه جدول CTE ایجاد می کنید که درونش دو تا Select وجود داره ... یه بار فیلدهای مورد نظر رو Select می کنید حاصل رو Union می کنید با حاصل join جدول اول و جدول CTE ... اینم یه کد نمونه ...
With myRoles (ParentID,Role_ID,RoleName,RoleLevel)
as
(
select ParentID,Role_ID,RoleName,1 as RoleLevel from dbo.Roles
where Role_ID=851
union All
Select Roles.ParentID,Roles.Role_ID,Roles.RoleName ,Rolelevel+1 as RoleLevel
from myRoles as m join Roles on Roles.ParentID=m.Role_ID
)
Select * from myRoles


فرض کن RoleID کد گروه و ParentID هم که مشخصه دیگه RoleID گروه پدره ...

azam2005
یک شنبه 11 تیر 1391, 10:35 صبح
ممنون واقعا بدردم خورد