CTE 查询未返回所需结果

CTE Query Not Returning Desired Results

我没有在我的 CTE 查询中得到 return 下方的第一条记录(稍后显示):

这是我的 table:

Key  ParentID  ChildID  (Removed DateJoined Field here)
1       0        1  
3       1       83
4       1       84  
6       83      85  
7       85      86  
8       83      87

我的 CTE 查询产生以下结果:

ID  Name            Date Joined  Parent ID  Parent Name        Level
83  Hanks, James    2014-09-13      1       Golko, Richard       1
84  Hanks, James    2014-09-13      1       Golko, Richard       1
85  Walker, Jamie   2014-09-13      83      Hanks, James         2
87  Newman, Betty   2014-09-20      83      Hanks, James         2
86  Adams, Ken      2014-09-13      85      Walker, Jamie        3

我怎样才能return第一条记录ParentID = 0

当我这样调用以下存储过程时:

EXEC UCU_RTG_ProgramStructure_GetMemberTree 0,4

我仍然只得到以 parentID=1 开头的结果,如上所示

这是我的 CTE 查询:

CREATE PROCEDURE [dbo].[UCU_RTG_ProgramStructure_GetMemberTree]
        @ParentID int,
        @MaxLevel int
AS

WITH matrix
AS 
( 
--initialization 
SELECT UserID, DateJoined, ParentID, 1 AS lvl
FROM dbo.UCU_RTG_ProgramStructure
WHERE ParentID = @ParentID
UNION ALL 
--recursive execution 
SELECT p.UserID,p.DateJoined,p.ParentID, lvl+1
FROM dbo.UCU_RTG_ProgramStructure p INNER JOIN matrix m  
ON p.ParentID = m.UserID 
WHERE lvl < @MaxLevel
) 
SELECT matrix.UserID, u.LastName + ', ' + u.FirstName AS Member ,DateJoined,ParentID,u2.LastName + ', ' + u2.FirstName AS Parent,lvl
FROM matrix
INNER JOIN dbo.Users u
ON u.UserID = matrix.UserID
INNER JOIN dbo.Users u2
ON u2.UserID = matrix.ParentID

ORDER BY ParentID

CTE 查询很好,只是它没有 return parentID=0 记录

谢谢...

在查看我的 post 以确保它是正确的之后我终于弄明白了:最后的 select 子句是错误的:

SELECT matrix.UserID, u.LastName + ', ' + u.FirstName AS Member ,DateJoined,ParentID,u2.LastName + ', ' + u2.FirstName AS Parent,lvl
FROM matrix
INNER JOIN dbo.Users u
ON u.UserID = matrix.UserID
INNER JOIN dbo.Users u2
ON u2.UserID = matrix.ParentID

最后一个 INNER JOIN 必须更改为 LEFT JOIN,因为没有 UserID 0 可以加入 ParentID 0。

希望这可以帮助其他人进行递归 CTE 查询。