2010-06-03 4 views
0

Employee 테이블이 있는데, 이는 자체 참조 테이블이며 managerId은 기본 키 empID을 나타냅니다. 주어진 레벨에 따라 2 레벨 기록을 찾고 싶습니다 empId.공통 SQL을 사용하는 재귀 적 2 레벨 레코드

예 : 주어진 경우 empId=5, empId=5에 어린이 레코드가있는 경우 어린이 레코드뿐만 아니라 어린이 레코드에도 표시하십시오. 데이터베이스는 SQL 서버를 2005

업데이트가 있습니다 : 내가 밖으로

+0

출력을 어떻게 표시 하시겠습니까? –

+1

두 개의 조인을 추가하면됩니까? –

+0

그래서 지금까지 무엇을 했습니까? – HLGEM

답변

0

이것은 당신이 시작할 수 있어야 전체 투사 싶어. "전체 투영"이란 무엇을 의미하는지 확신 할 수 없습니다. 모든 어린이의 모든 자녀를 의미하는 경우 루프가 필요합니다. 그러나 2 레벨 아래로 내려가고 싶다면이 예제가 효과적입니다.

SELECT 
    t1.empID as Parent_ID, 
    t2.empID as Child_ID, 
    t3.empID as Grandchild_ID 
FROM 
    employee t1 
    LEFT JOIN employee t2 ON t1.empID = t2.managerID 
    LEFT JOIN employee t3 ON t2.empID = t3.managerID 
WHERE t1.empID = @given_empID