2010-07-27 65 views
2

我有一個「Employee」表,其中有一個「EmployeeID」列和一個表示Employee的列表(BossID)的列,而BossID又是「Employee」表中的一名僱員。我如何追蹤從給定「EmployeeID」到最頂級Boss的層次結構。我不想自連接方法在此,還我使用SQL Server 2005的跟蹤表中的層次結構

謝謝

馬努

+0

您是否正在尋找一種存儲過程?我認爲這是不可能的,這種數據庫佈局沒有自動加入或使用存儲過程。 – theomega 2010-07-27 21:34:28

+3

我已經添加了一個標籤'hierarchical-data'。這個問題和相關問題在Stack Overflow上出現了數十次。在詢問之前,您可以通過做一些調查來節省大量時間。 – 2010-07-27 21:43:23

回答

6

你必須使用某種自我與你所描述的表結構基本上加盟但可以使用遞歸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