2011-03-03 16 views
5

मैं वर्तमान में एक कर्मचारी तालिका से कर्मचारी पदानुक्रम बनाने के लिए एक सीटीई क्वेरी चला रहा हूं जो कि सबसे पुनरावर्ती उदाहरणों के समान है। जहां मैं फंस गया हूं वह यह है कि मैं एक कर्मचारी के लिए पूछताछ करने की कोशिश कर रहा हूं और उसके ऊपर पदानुक्रम प्राप्त कर रहा हूं। नीचे दी गई तालिका मैं काम करने के लिए कोशिश कर रहा हूँ का एक उदाहरण है साथ:एसक्यूएल सीटीई रिकर्सन: रिटर्निंग पेरेंट रिकॉर्ड्स

with employeeMaster as (
    select p.EmployeeID, p.MgrID, p.Name 
    from Employees p 
    where p.MgrID is null 

    union all 

    select c.EmployeeID, c.MgrID, c.Name 
    from employeeMaster cte inner join Employees c on c.MgrID = cte.EmployeeID 
) 
select * from employeeMaster 

मैं कहां अटक कर रहा हूँ है:

Employees 
=========================================================================== 
EmployeeID MgrID Name 
1    null  Joe 
2    1  John 
3    2  Rob 
4    2  Eric 

निम्नलिखित एसक्यूएल कि मुझे शीर्ष नीचे से पदानुक्रम प्रदर्शित करने के लिए अनुमति देता है कि मैं यह नहीं समझ सकता कि निम्नतम स्तर के कर्मचारी, या तो रॉब या एरिक के लिए पूछताछ कैसे करें, और जो> जॉन> एरिक से उसके ऊपर पदानुक्रम वापस करें। ऐसा लगता है कि यह आसान होना चाहिए लेकिन मैं इसे मेरे जीवन के लिए नहीं खोज सकता।

उत्तर

8

क्या आप पदानुक्रम की गहराई के आधार पर कॉलम की एक चर संख्या को वापस करने के लिए एक प्रश्न की तलाश कर रहे हैं? या सिर्फ एक क्षेत्र में एक संयोजित स्ट्रिंग?

यहां आपकी क्वेरी में मामूली परिवर्तन है जो एरिक और पदानुक्रम में उसके ऊपर कोई भी व्यक्ति प्राप्त करेगा।

WITH employeeMaster 
     AS (SELECT p.EmployeeID , 
        p.MgrID , 
        p.NAME 
      FROM  Employees p 
      WHERE p.NAME = 'Eric' 
      UNION ALL 
      SELECT c.EmployeeID , 
        c.MgrID , 
        c.NAME 
      FROM  employeeMaster cte 
        INNER JOIN Employees c ON c.EmployeeID = cte.MgrID 
     ) 
SELECT * 
FROM employeeMaster m 
+0

मेरी पोस्ट में टेबल उदाहरण का उपयोग करके, मैं एरिक के लिए पूछताछ करना चाहता हूं और अपने रिकॉर्ड और उसके ऊपर के दो लोगों को दिखाते हुए तीन रिकॉर्ड के साथ एक रिकॉर्डसेट वापस करना चाहता हूं। अंतिम लक्ष्य किसी कर्मचारी को अपमानजनक क्वेरी है और उस कर्मचारी की शीर्ष श्रृंखला तक कमांड की श्रृंखला देखता है। – Tehrab

+0

मैंने आपको एरिक और उसके प्रबंधकों को देने के लिए संपादित किया। –

+0

हमेशा सरल सामान। उत्तर के रूप में चिह्नित। – Tehrab

संबंधित मुद्दे