2016-09-21 5 views
0

나는 다음과 같은 학생 테이블

id boss_id name age 
1 NULL NEW_A 10 
2 1  NEW_A 12 
3 1  NEW_A 14 
4 3  NEW_A 16 
5 3  NEW_A 18 
6 5  NEW_A 20 
7 1  NEW_B 22 
8 1  NEW_B 24 
9 8  NEW_B 26 
10 9  NEW_B 28 
11 4  NEW_B 44 

다음 쿼리는

select s.id as student, boss.id as boss from Student s, Student boss 
where s.boss_id = boss.id --and s.id = 11 
order by s.id 

2 1 
3 1 
4 3 
5 3 
6 5 
7 1 
8 1 
9 8 
10 9 
11 4 

내가가 전체 체인 종속

을 반환하려면 검색 한 전체 subordintion 체인을 쓰기 엑사 학생 11을위한 mple

student_id boss_id 
11    4 
4    3 
3    1 

sql이 필요에 따라 쿼리를 작성할 수 있습니까?

+0

을 사용하고 있습니까? –

+0

@vkp 나는 ms sql을 사용하지만 우주 데이터베이스를 선호합니다 – gstackoverflow

+0

우주가 너무 커서 모든 사람이 같은 도구를 사용하지 않습니다 –

답변

2

당신은 재귀 CTE와 함께이 작업을 수행 할 수 있습니다 DBMS의는 무엇을

;With Cte As 
(
    Select T.id, T.boss_id 
    From YourTable T 
    Where T.Id = 11 
Union All 
    Select T.id, T.boss_id 
    From YourTable T 
    Join Cte   C On C.boss_id = T.id 
          And T.boss_id Is Not Null 
) 
Select id, boss_id 
From Cte 

id boss_id 
11 4 
4 3 
3 1 

SQL Fiddle Live Demo

+0

어떻게 작동하는지 모르겠지만 정말 일한다. – gstackoverflow