Go Premium for a chance to win a PS4. Enter to Win

x
?
Solved

recursive query

Posted on 2011-03-09
4
Medium Priority
?
221 Views
Last Modified: 2012-05-11
How does one write a recursive query?  This would come into play where a table is self-referencing.   Like, a list of employees, where there is a primary Key and supervisor column, where the latter maps to the primary key.   So, If I want a list of employees everyone from person "X" on down, how do I do this?
0
Comment
Question by:HLRosenberger
  • 2
4 Comments
 
LVL 32

Expert Comment

by:Ephraim Wangoya
ID: 35087033

You can use a recursive Common Table Expression (CTE) to do this kind of query
0
 
LVL 32

Accepted Solution

by:
Ephraim Wangoya earned 2000 total points
ID: 35087074
here is an example

ID Parent
1  null
2  1
3  1
4  null
5  4
6  5

with CTE(ID, PARENT)
AS
(
      SELECT F.ID, F.PARENT
      FROM TABLE1 F
      WHERE PARENT IS NULL
      UNION ALL
      SELECT F.ID, F.PARENT
      FROM TABLE1 F
      INNER JOIN CTE FH ON FH.ID = F.PARENT
)

SELECT ID, PARENT FROM CTE
0
 
LVL 9

Expert Comment

by:gdupadhyay
ID: 35087209
I believe you are looking to make a tree for employee:
See example below:
ID: Emp ID
Name: Emp Name
Manager: Emp. Manager ID (NULL: Emp. have no manager)

ID      Name      Manager
1      a      NULL
2      b      1
3      c      1
4      X      2
5      Y      2
6      Z      1
7      P      3

WITH Employee_Tree (ID,
		Name,
		Manager,
		Depth) AS(
    SELECT  ID,
		Name,
		Manager,
		1 AS depth
     FROM Employee WITH (NOLOCK)
     WHERE MANAGER IS NULL
   UNION ALL
	SELECT  N.ID,
	        N.Name,
		N.Manager,
		ET.Depth + 1
		FROM Employee AS N WITH (NOLOCK)
	INNER JOIN Employee_Tree ET 
		ON ET.ID = N.Manager)
		SELECT ID,
		   Name,
		   Manager,
	FROM Employee_Tree

Open in new window

0
 
LVL 1

Author Closing Comment

by:HLRosenberger
ID: 35124508
Thanks!
0

Featured Post

Industry Leaders: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

This article shows gives you an overview on SQL Server 2016 row level security. You will also get to know the usages of row-level-security and how it works
What if you have to shut down the entire Citrix infrastructure for hardware maintenance, software upgrades or "the unknown"? I developed this plan for "the unknown" and hope that it helps you as well. This article explains how to properly shut down …
Using examples as well as descriptions, and references to Books Online, show the documentation available for date manipulation functions and by using a select few of these functions, show how date based data can be manipulated with these functions.
Using examples as well as descriptions, and references to Books Online, show the different Recovery Models available in SQL Server and explain, as well as show how full, differential and transaction log backups are performed

879 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question