【问题标题】:SQL Server query to find parent names of childSQL Server查询以查找孩子的父母姓名
【发布时间】:2012-04-05 10:33:35
【问题描述】:
我有一张这样的桌子
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 写查询,但想不出逻辑,谁能帮帮我
【问题讨论】:
标签:
sql-server
join
parent
common-table-expression
【解决方案1】:
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
如果您想包含没有Mother 和/或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
【解决方案2】:
试试这样的:
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
【解决方案3】:
选择查询
SELECT A.*
FROM tbl A
,tbl M
,tbl F
WHERE A.Mother = M.ID
AND A.Father = F.ID
没有内连接..