Sql server SQL Server查询以查找子对象的父名称
我有一张这样的桌子Sql server SQL Server查询以查找子对象的父名称,sql-server,join,parent,common-table-expression,Sql Server,Join,Parent,Common Table Expression,我有一张这样的桌子 ID Name Mother Father 1 Sue NULL NULL 2 Ed NULL NULL 3 Emma 1 2 4 Jack 1 2 5 Jane NULL NULL 6 Bonnie 5 4 7 Bill 5 4 我需要如下输出 ID Name Mother Father 3 Emma su
ID Name Mother Father
1 Sue NULL NULL
2 Ed NULL NULL
3 Emma 1 2
4 Jack 1 2
5 Jane NULL NULL
6 Bonnie 5 4
7 Bill 5 4
我需要如下输出
ID Name Mother Father
3 Emma sue ed
4 jack sue ed
6 bonnie jane jack
7 bill jane jack
我试过用join n cte写查询,但没能想出逻辑,有人能帮我吗
SELECT t.ID, t.Name, m.Name, f.Name
FROM your_table t
INNER JOIN your_table m ON m.ID = t.Mother
INNER JOIN your_table f ON f.ID = t.Father
如果要包含不带母节点和/或父节点的记录,请使用LEFT JOIN
:
SELECT t.ID, t.Name, ISNULL(m.Name, 'Orphan') Mother, ISNULL(f.Name, 'Orphan') Father
FROM your_table t
LEFT JOIN your_table m ON m.ID = t.Mother
LEFT JOIN your_table f ON f.ID = t.Father
试着这样做:
select
p.id, p.name, p1.name as mother, p2.name as father
from people p
inner join people p1 on p1.id = p.mother
inner join people p2 on p2.id = p.father
选择查询
SELECT A.*
FROM tbl A
,tbl M
,tbl F
WHERE A.Mother = M.ID
AND A.Father = F.ID
没有内部联接..这仍然是内部联接