2013-12-09 2 views
1

#Temp 테이블의 부모 ID 아래에 자식을 가져 오는 쿼리를 작성하려고합니다. #Temp부모에게 자식을 가져 오는 재귀적인 SQL 쿼리

아래 표 찾아주세요 : 부모 값이 NULL 다음 자식 값을 해당하는 것은 L1입니다 및 L5에 L1에서 수준을 찾아야합니다.

child | Parent 
    c1  p1 
    p1  NULL 
    c2  p2 
    p2  p3 
    p4  p3 
    p3  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 

와 시도 아래의 출력

L1 | L2 | L3 | L4 | L5 
p1 c1 NULL NULL NULL 
p3 p2 c2 NULL NULL 
p3 p4 NULL NULL NULL 

을 찾고 있어요하지만 예상 출력을받지 못했습니다. 제발 조언. 미리 감사드립니다!

+0

. 여기에 붙여 넣을 수 있습니까? – Aditya

답변

3

변화는 왼쪽에 innerjoin 가입 : 당신이지고있는 것을 출력

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 
관련 문제