2010-10-22 54 views
0

EXACT重复的Sql Server2005 query problem的Sql Server2005中的问题

我有一个包含以下字段

•Supervisorid •EMPID 这就像一个推荐计划表。一个家伙可以参考他下面的3个家伙ie,3指的是三个家伙即4 5 8同样4指的是9 10和11同样8指的是12,13这样去吧..

我想查询得到Supervisor 3下的所有EmpId

+3

如果你希望人们投资自己的时间回答你的问题,你应该花些时间在问这个问题。 – 2010-10-22 05:11:30

+1

** EXACT ** [Sql Server2005查询问题]的副本(http://stackoverflow.com/questions/3993927/sql-server2005-query-problem) – 2010-10-22 05:43:47

回答

0

检查this。它使用递归存储过程,因此引用级别将受到限制。

非递归存储过程调用solution

随着SQL2005,你可以使用递归查询使用公用表表达式:

WITH Report(Supervisorid , Empid , Title, Level) 
    AS 
    (
    -- Anchor member definition 
     SELECT e.Supervisorid , e.Empid , e.Title, 0 AS Level 
     FROM dbo.MyEmployees AS e 
     WHERE Supervisorid = 3 
     UNION ALL 
    -- Recursive member definition 
     SELECT e.Supervisorid , e.Empid , e.Title, Level + 1 
     FROM dbo.MyEmployees AS e 
     INNER JOIN Report AS d 
      ON e.Supervisorid = d.Empid 
    ) 
    -- Statement that executes the CTE 
SELECT Supervisorid , Empid , Title, Level 
FROM Report;