有一个包含2列的表格,父级和子级。 “父级”列中也列出了一些子级。如何返回祖父母及其子女的名单?
Parent | Child Tom | Joe Sam | Mark Mark | Gil Joe | Sal Joe | Dan
想要的结果:
Grandparent| Grandchild Sam | Gil Tom | Sal Tom | Dan
我找到了如何获得祖父母的方法。
SELECT Parent as Grandparent FROM ParentChild WHERE Child IN (Select Parent from ParentChild)
但是我认为我需要使用联接才能使其正常工作,但是我无法弄清楚。
答案 0 :(得分:0)
这是一个自我联接:
select tp.parent, tgc.child
from t tp join
t tgc
on tp.child = tgc.parent
答案 1 :(得分:0)
SELECT GrandData.Parent as Grandparent, ParentData.GrandChild as Grandchild
From ParentChild as GrandData
Inner JOIN
(
SELECT Parent as Parent, Child as GrandChild
FROM ParentChild
WHERE Parent IN (Select Child from ParentChild)
) As ParentData
On GrandData.Child=ParentData.Parent
Order by GrandData.Parent
您必须先像内部查询中一样标识父子关系,然后才能为下一代(祖父母)基于父子关系进行内部联接。