Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server SQL Server查询以查找子对象的父名称_Sql Server_Join_Parent_Common Table Expression - Fatal编程技术网

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    

没有内部联接..

这仍然是内部联接