سلام.
من مدت طولانی صبر کردم ولی دوستان جواب مناسبی ارسال نکردند.
من جوابها رو قرار میدهم.
ابتدا رکوردهای زیر رو وارد میکنیم.
Create Table #Temp (
ID int NULL,
Name varchar(50) NULL,
ParentId int NULL
)
Insert Into #Temp Values(1,'AB1',0)
Insert Into #Temp Values(2,'AB2',0)
Insert Into #Temp Values(3,'CD1',1)
Insert Into #Temp Values(4,'CD2',1)
Insert Into #Temp Values(5,'CD3',1)
Insert Into #Temp Values(6,'EF1',2)
Insert Into #Temp Values(7,'GH1',3)
Insert Into #Temp Values(8,'GH2',5)
Insert Into #Temp Values(9,'IJ1',6)
Insert Into #Temp Values(10,'KL1',7)
Insert Into #Temp Values(11,'MN',10)
Insert Into #Temp Values(12,'OP',11)
جواب سوال 1 :
Declare @Id int
Set @Id = 1
;With RES as(
Select * From #Temp Where Id = @Id
UNION ALL
Select t.*
From #Temp T INNER JOIN RES R
On T.ParentID = R.ID
)
Select * From RES
جواب سوال 2 :
Declare @Id int
Set @Id = 7
;With RES as(
Select * From #Temp Where Id = @Id
UNION ALL
Select t.*
From #Temp T INNER JOIN RES R
On T.ID = R.ParentId
)
Select * From RES