【发布时间】:2014-04-20 23:25:54
【问题描述】:
从 EmployeeId 8 我想得到他所有的父母 EmployeeId,这些是 EmployeeId 的 7,5,3,2,1
CREATE TABLE EmployeeTree(
EmployeeId int,
EmployeeName nvarchar(100),
EmployeeType nvarchar(40),
EmployeeParentId int
)
INSERT INTO EmployeeTree (EmployeeId, EmployeeName, EmployeeType, EmployeeParentId)
VALUES (1, 'Mickey Mouse', 'CEO', NULL)
INSERT INTO EmployeeTree (EmployeeId, EmployeeName, EmployeeType, EmployeeParentId)
VALUES (2, 'Minnie Mouse', 'President', 1)
INSERT INTO EmployeeTree (EmployeeId, EmployeeName, EmployeeType, EmployeeParentId)
VALUES (3, 'Donald Duck', 'Division Head', 2)
INSERT INTO EmployeeTree (EmployeeId, EmployeeName, EmployeeType, EmployeeParentId)
VALUES (4, 'Daffy Duck', 'Division Head', 2)
INSERT INTO EmployeeTree (EmployeeId, EmployeeName, EmployeeType, EmployeeParentId)
VALUES (5, 'Scrooge McDuck', 'Department Head', 3)
INSERT INTO EmployeeTree (EmployeeId, EmployeeName, EmployeeType, EmployeeParentId)
VALUES (6, 'Huey McDuck', 'Team Lead', 5)
INSERT INTO EmployeeTree (EmployeeId, EmployeeName, EmployeeType, EmployeeParentId)
VALUES (7, 'Dewey McDuck', 'Team Lead', 5)
INSERT INTO EmployeeTree (EmployeeId, EmployeeName, EmployeeType, EmployeeParentId)
VALUES (8, 'Louie McDuck', 'Team Member', 7)
使用这段代码我遇到了递归问题:
DECLARE @EmployeeId INT
SET @EmployeeId = 8;
WITH x(Id) AS (SELECT @EmployeeId UNION ALL SELECT dbo.EmployeeTree.EmployeeId
FROM dbo.EmployeeTree INNER JOIN x ON EmployeeTree.EmployeeId = x.Id )
Select * FROM x JOIN dbo.EmployeeTree as e ON e.EmployeeParentId = x.Id
我必须在我的 CTE 中更正什么,才能获得employeeId 8 的所有父员工ID?
【问题讨论】:
标签: sql common-table-expression