ورود

View Full Version : پیدا کردن والدهای یک فرزند



Iran58
جمعه 30 بهمن 1394, 01:58 صبح
سلام
فرض کنید یک جدول داریم حاوی سه ستون است

CREATE TABLE [dbo].[Table_1](
[Id] [int] NULL,
[Name] [nvarchar](50) NULL,
[IdParent] [int] NULL
) ON [PRIMARY]



INSERT INTO [dbo].[Table_1]VALUES (1,'a',null)
INSERT INTO [dbo].[Table_1]VALUES (2,'aa',1)
INSERT INTO [dbo].[Table_1]VALUES (3,'b',null)
INSERT INTO [dbo].[Table_1]VALUES (4,'aaa',2)
INSERT INTO [dbo].[Table_1]VALUES (5,'aaaa',4)
INSERT INTO [dbo].[Table_1]VALUES (6,'ab',1)
INSERT INTO [dbo].[Table_1]VALUES (7,'ac',5)
INSERT INTO [dbo].[Table_1]VALUES (8,'adf',null)
INSERT INTO [dbo].[Table_1]VALUES (9,'ag',8)
INSERT INTO [dbo].[Table_1]VALUES (10,'qwe',7)
INSERT INTO [dbo].[Table_1]VALUES (11,'ujm',8)
INSERT INTO [dbo].[Table_1]VALUES (12,'uhv',10)
INSERT INTO [dbo].[Table_1]VALUES (13,'ioo',11)
INSERT INTO [dbo].[Table_1]VALUES (14,'sxw',3)
INSERT INTO [dbo].[Table_1]VALUES (15,'plm',null)
INSERT INTO [dbo].[Table_1]VALUES (16,'rad',12)


و هر فرزند می تواند سلسله مراتبی تا12 والد می تواند داشته باشد (مثلا پدر ,پدربزرگ ,جدو....)
حال من چگونه می توان باداشتن id شماره 16 والدهای مورد نظر را پیدا کنم(12,10,7,5,4,2,1)

parsdarab
یک شنبه 09 اسفند 1394, 13:54 عصر
سلام

من فقط در همین حد می دونم که اولین والد را نمایش بده

(SELECT *
FROM Table_1 a inner join Table_1 b
on a.Id=b.IdParent)

نتیجه

139326

parsdarab
یک شنبه 09 اسفند 1394, 14:24 عصر
سلام

با استفاده از کوئری زیر اعداد داده می شود ولی می تونی توسعه ش بدی و تبدلش کنی به تابع

declare @a int
select @a=IdParent from Table_1 where Id=16
while @a is not null
begin
print @a
select @a=IdParent from Table_1 where Id=@a
end

aslan
یک شنبه 09 اسفند 1394, 14:48 عصر
http://www.codeproject.com/Articles/818694/SQL-queries-to-manage-hierarchical-or-parent-child