我有下面的表格
表名: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 ...
就像我的评论一样,您的列在加入时不正确。使用getallparent p on p.ParentID = c.ChildID
。