From EmployeeId 8 I want to get all his parents EmployeeId's which are these EmployeeId's 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)
With this code I run into recursive problems:
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
What do I have to correct in my CTE that I get all parent employee ids for the employeeId 8 ?