2010-10-04 13 views
5

चलें कहते हैं कि मैं निम्न तालिकाएसक्यूएल पुनरावर्ती क्रिया - प्रबंधकों को खोजने के लिए

User_ID Manager_ID 
--------------------- 
Linda  Jacob 
Mark   Linda 
Kevin  Linda 
Steve  Mark 
John   Kevin 

मूल रूप से आवश्यकता user_id आप खोज रहे हैं के तहत सभी प्रबंधकों को खींचने के लिए है। तो उदाहरण के लिए अगर मैं 'लिंडा' में भेज तो यह मुझे वापस आना होगा:

'Mark', 'Kevin', 'Steve', 'John' 

या अगर मैं 'मार्क' में भेज तो यह मुझे वापस आना होगा:

Steve 

मैं पुनरावर्ती क्रिया के बारे में सुना है लेकिन मुझे यह सुनिश्चित नहीं है कि यह कैसे करें। किसी भी सहायता की सराहना की जाएगी।

उत्तर

6

उपयोग:

WITH hieararchy AS (
    SELECT t.user_id 
    FROM YOUR_TABLE t 
    WHERE t.manager_id = 'Linda' 
    UNION ALL 
    SELECT t.user_id 
    FROM YOUR_TABLE t 
    JOIN hierarchy h ON h.user_id = t.manager_id) 
SELECT x.* 
    FROM hierarchy x 

ResultSet:

user_id 
-------- 
Mark 
Kevin 
John 
Steve 

स्क्रिप्ट:

CREATE TABLE [dbo].[YOUR_TABLE](
[user_id] [varchar](50) NOT NULL, 
[manager_id] [varchar](50) NOT NULL 
) 

INSERT INTO YOUR_TABLE VALUES ('Linda','Jacob') 
INSERT INTO YOUR_TABLE VALUES ('Mark','Linda') 
INSERT INTO YOUR_TABLE VALUES ('Kevin','Linda') 
INSERT INTO YOUR_TABLE VALUES ('Steve','Mark') 
INSERT INTO YOUR_TABLE VALUES ('John','Kevin') 
+0

धन्यवाद इस पूरी तरह से काम करता है, त्वरित प्रश्न। क्या परिणाम किसी सरणी में डालने के लिए है, इसलिए मैं इसे अपने चयन कथन – Jacob

+0

@ जैकोब में उपयोग कर सकता हूं: आप सीटीई के नाम पर शामिल हो सकते हैं, जैसे कि आप किसी भी टेबल या दृश्य के लिए –

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