Я новичок в sql, и мне нужна ваша помощь в этой ситуации, которая может быть базовой для большинства из вас:
У меня есть таблица «Сотрудник», в которой, среди прочего, есть атрибуты ID и BOSS_ID. BOSS_ID боссов верхнего уровня равен NULL.
Теперь я хотел бы иметь таблицу, в которой перечислены идентификаторы сотрудников вместе с идентификаторами конкретного босса высшего уровня.
Что я уже сделал, так это рекурсивный запрос, который возвращает всех сотрудников с идентификатором следующего босса более высокого уровня:
WITH TopBosses(ID,NAME, BOSS_ID)
AS
(
SELECT ID,NAME, BOSS_ID
FROM EMPLOYEE
WHERE BOSS_ID IS NULL
UNION ALL
SELECT EMPLOYEE.ID,EMPLOYEE.NAME, EMPLOYEE.BOSS_ID
FROM EMPLOYEE
INNER JOIN TopBosses
ON EMPLOYEE.BOSS_ID = TopBosses.ID
)
SELECT ID,NAME, BOSS_ID
FROM TopBosses
Но поскольку идентификатор босса следующего уровня уже является частью таблицы «Сотрудник», это довольно бесполезно для меня :) Я просто не понимаю последний шаг, как я всегда могу получить конкретного босса высшего уровня.
Спасибо за ваши ответы!