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 

पैरामीटर आईडी की तरह लग रहा @Emp_ID = 2 के तहत सभी अधीनस्थों को खोजने के लिए अपेक्षित परिणाम दिए गए Emp_Id तो परिणाम सभी EmpIDs होना चाहिए 3,4,5,6,7 क्योंकि 2 3,4 और 3 के प्रबंधक 6 के प्रबंधक है, 4 से 5 और 5 के प्रबंधक 7

+0

मैं अपने जवाब को नवीनीकृत किया है CTE काम करने का एक उदाहरण शामिल करने के लिए। अगर आप इसके साथ अन्य मुद्दों में भाग लेते हैं तो मुझे बताएं। –

+0

@Adam धन्यवाद यह अच्छा काम करता है –

उत्तर

7

के प्रबंधक एक Recursing CTE का प्रयोग किया जाता है । यह वर्तमान में सभी तीन कॉलम देता है। SELECT से Emp_Name और Emp_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

समस्या मेरी तालिका में हल की गई थी, पहली पंक्ति प्रबंधक आईडी 1 थी, यह एक अनंत लूप के माध्यम से जाती है –