Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/83.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查询以获取父项下的子项-SQL Server 2008_Sql_Sql Server_Sql Server 2008 - Fatal编程技术网

递归SQL查询以获取父项下的子项-SQL Server 2008

递归SQL查询以获取父项下的子项-SQL Server 2008,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,我正试图从表#Temp中编写查询,以获取父id下的子项。请查看下表#Temp 注意:父值为NULL,则对应的子值为L1,需要查找L1到L5之间的级别 child | Parent c1 p1 p1 NULL c2 p2 p2 p3 p4 p3 p3 NULL 我正在寻找下面的输出 L1 | L2 | L3 | L4 | L5 p1 c1 NULL NULL NULL p3 p2 c2 NULL

我正试图从表
#Temp
中编写查询,以获取父id下的子项。请查看下表
#Temp

注意:父值为
NULL
,则对应的子值为L1,需要查找L1到L5之间的级别

child | Parent
  c1      p1
  p1     NULL
  c2      p2
  p2      p3
  p4      p3
  p3     NULL
我正在寻找下面的输出

 L1 | L2 | L3 | L4 | L5
 p1   c1  NULL NULL NULL
 p3   p2   c2  NULL NULL
 p3   p4  NULL NULL NULL
我尝试过这个问题

SELECT L1.child 'L1', 
       L2.child 'L2', 
       L3.child 'L3', 
       L4.child 'L4', 
       L5.child 'L5' 
FROM   #temp L1 
       INNER JOIN #temp L2 
               ON L2.parent = L1.child 
       INNER JOIN #temp L3 
               ON L3.parent = L2.child 
       INNER JOIN #temp L4 
               ON L4.parent = L3.child 
       INNER JOIN #temp L5 
               ON L5.parent = L4.child 
WHERE  L1.parent IS NULL 

但我没有得到预期的产出。请给我一些建议。提前谢谢

将innerjoin更改为Left join:

Select 
    L1.child 'L1', L2.child 'L2', L3.child 'L3', L4.child 'L4', L5.child 'L5'
from 
    #Temp L1
LEFT join 
    #Temp L2 ON L2.Parent = L1.child
LEFT join 
    #Temp L3 ON L3.Parent= L2.child
LEFT join 
    #Temp L4 ON L4.Parent= L3.child
LEFT join 
    #Temp L5 ON L5.Parent= L4.child
where 
    L1.Parent is null

你得到的是什么输出。你能把它贴在这里吗。