Проследить иерархию в таблице - PullRequest
2 голосов
/ 28 июля 2010

У меня есть таблица «Сотрудник» со столбцом «EmployeeID» и столбцом, представляющим босса сотрудника (BossID), который, в свою очередь, является сотрудником в таблице «Сотрудник».Как я могу проследить иерархию от заданного «EmployeeID» до самого верхнего босса.Я не хочу подход с самостоятельным объединением в этом, также я использую SQL Server 2005.

Спасибо

Manu

1 Ответ

6 голосов
/ 28 июля 2010

Вы должны использовать какое-то самосоединение в основном со структурой таблицы, которую вы описываете, но можете использовать рекурсивный CTE для этого для обработки произвольных глубин иерархии, если это было проблемой?

WITH cte AS
(
SELECT EmployeeID, BossId
FROM Employee where EmployeeID = @EmployeeID
UNION ALL
SELECT e.EmployeeID, e.BossId
FROM Employee e JOIN cte ON cte.BossId = e.EmployeeID
)
SELECT EmployeeID 
FROM cte
...