获得特定孩子的父母和祖父母

问题描述 投票:2回答:1

我有下面的表格

表名:ExampleTable

ChildID       ChildCommonID   ParentID


1               2                0

2               3                0

3               4                1

4               5                3

5               6                4

问题是:

我有一个孩子的ID例子:ChildID= 5

所以我需要检查是否有父母,如果它有父母然后检查相应的parentid,在这种情况下,parentID为4,因此需要检查子项4有任何父项,在这种情况下,子项4的parentID为3,因此收益检查子项3有任何父项在这种情况下,子项3有父项1,因此检查子项1有任何父项,子项1是顶级祖父项,并且没有父项,因此停止该过程并返回不超过1个的所有子代]

这里是预期的输出是

ChildID

5
4
3
1

我尝试过类似下面的操作,但它没有提供正确的输出

with getallparent as (
   select * 
   from ExampleTable 
   where ChildID  = 5 
  union all 
  select *
   from ExampleTable c 
     Left join getallparent p on p.ChildID = c.ParentID 
) 
select *
from getallparent;

如果需要样本数据,可以使用以下查询

create table ExampleTable(ChildID int,ChildCommonID int ,ParentID int )
insert into ExampleTable values(1,2,0)
insert into ExampleTable values(2,3,0)
insert into ExampleTable values(3,4,1)
insert into ExampleTable values(4,5,3)
insert into ExampleTable values(5,6,4)

任何帮助将不胜感激

我的表如下表名:ExampleTable ChildID ChildCommonID​​ ParentID 1 2 0 2 3 0 3 4 1 ...

sql-server sql-server-2005 common-table-expression
1个回答
3
投票

就像我的评论一样,您的列在加入时不正确。使用getallparent p on p.ParentID = c.ChildID

© www.soinside.com 2019 - 2024. All rights reserved.