5

我的表包含三列和值如下所示SQL查詢來尋找下的所有下屬一個優越

Emp_ID | Emp_Name | Emp_Manager_ID 
======================================== 
1  | Admin  | Null   
2  | John  | 1    
3  | Sam  | 2    
4  | Mike  | 2    
5  | Jeff  | 4    
6  | Ben  | 3    
7  | Vicky  | 5 

參數ID @emp_id = 2 預期的結果找到下的所有下屬給定EMP_ID 所以結果應該是所有EmpIDs 3,4,5,6,7 因爲2是3,4和3中的管理器的6管理者,4是5,5所述管理器被7

+0

我已經更新了我的答案,包括了CTE工作的一個例子。如果您遇到其他問題,請告訴我。 –

+0

@亞當感謝它工作良好 –

回答

7

使用Recursing CTE經理。這目前返回所有三列。如果您不需要該信息,請從SELECT刪除Emp_NameEmp_Manager_ID

WITH Subordinates AS 
(
    SELECT e.Emp_ID, e.Emp_Name, e.Emp_Manager_ID 
    FROM Employee AS e 
    WHERE e.Emp_Manager_ID = 2 

    UNION ALL 

    SELECT e.Emp_ID, e.Emp_Name, e.Emp_Manager_ID 
    FROM Employee AS e 
    INNER JOIN Subordinates AS sub ON e.Emp_Manager_ID = sub.Emp_ID 
) 
SELECT s.Emp_ID, s.Emp_Name, s.Emp_Manager_ID 
FROM Subordinates AS s 

Example of query running using Employee_ID = 1:

+0

問題在我的表中解決了第一個rown manager id是1它經歷了一個無限循環然後 –