2010-07-27 6 views
2

"EmployeeID"열과 Employee의 Boss (BossID)를 나타내는 열이있는 Employee 테이블이 있습니다.이 Boss (BossID)는 "Employee"테이블의 직원입니다. 주어진 "EmployeeID"에서 최상위 보스까지 계층 구조를 어떻게 추적 할 수 있습니까? 나는 당신이 자기의 어떤 종류를 사용할 필요가 당신에게표에서 계층 구조 추적

마누

+0

저장 프로 시저 종류를 찾으십니까? 자체 결합이나 저장 프로 시저를 사용하지 않으면이 데이터베이스 레이아웃으로는 불가능하다고 생각합니다. – theomega

+3

'hierarchical-data' 태그를 추가했습니다. 이 질문 및 관련 질문은 스택 오버플로에서 여러 번 나타났습니다. 당신은 묻기 전에 약간의 연구를함으로써 많은 시간을 절약 할 수 있습니다. –

답변

6

감사 당신이 설명하는 테이블 구조와 기본적으로 가입 자체가 또한 내가 SQL 서버 2005

를 사용하고,이에 접근 가입하지 않으 그러나 재귀 CTE를 사용하여 계층 구조의 임의의 깊이를 처리 할 수 ​​있습니다.

WITH cte AS 
(
SELECT EmployeeID, BossId 
FROM Employee where EmployeeID = @EmployeeID 
UNION ALL 
SELECT e.EmployeeID, e.BossId 
FROM Employee e JOIN cte ON cte.BossId = e.EmployeeID 
) 
SELECT EmployeeID 
FROM cte