使用常见sql仅递归2级记录

时间:2010-06-03 10:11:09

标签: sql database sql-server-2005

我有一个Employee表,它是一个自引用表,managerId表示主键empID。我希望找到给定empId的2级记录。

例如:如果给定empId=5, 如果empId=5有子记录,则显示它们以及子记录中的子项。 该数据库是SQL Server 2005。

更新:我想要完整投射

1 个答案:

答案 0 :(得分:0)

这应该让你开始。不确定你的意思是“完全投射”。如果你的意思是每个孩子的每个孩子,那么你需要一个循环。但是如果你知道你只想降低2级,那么这个例子就可以了:

SELECT
   t1.empID as Parent_ID,
   t2.empID as Child_ID,
   t3.empID as Grandchild_ID
FROM 
   employee t1
   LEFT JOIN employee t2 ON t1.empID = t2.managerID
   LEFT JOIN employee t3 ON t2.empID = t3.managerID
WHERE t1.empID = @given_empID