Хто мій керівник?
У цій вправі потрібно отримати шлях від керівника на вершині ієрархії до співробітників унизу. Для цього потрібно на кожному кроці поєднати отриману інформацію в одному полі. Це можна зробити, об'єднуючи ID за допомогою CAST() для перетворення числа на рядок. Наприклад, CAST(ID AS VARCHAR(MAX)) перетворює ID числового типу на символьний.
Завдання: знайти шлях для співробітників Chris Feierabend з ID=18 і Jasmin Mentil з ID=16 аж до вершини організації. Вивід має виглядати так: boss_first_level -> boss_second_level .... Потрібно вибирати ID співробітників, а не їхні імена.
Ця вправа є частиною курсу
Ієрархічні та рекурсивні запити в SQL Server
Інструкції до вправи
- Ініціалізуйте
PathякIDкерівника (0) і задайте початкову умову рекурсії. - Виконайте
UNIONз опорним членом і визначте поля рекурсивного члена (ID,Name,Supervisor). - На кожному кроці додавайте
IDкерівникаSupervisorдоPath. - У CTE виберіть
IDспівробітниківChris FeierabendіJasmin Mentil.
Інтерактивна практична вправа
Спробуйте виконати цю вправу, доповнивши цей зразок коду.
WITH employee_Hierarchy AS (
SELECT
ID,
NAME,
Supervisor,
-- Initialize the Path with CAST
___('___' AS VARCHAR(MAX)) as Path
FROM employee
WHERE Supervisor = 0
-- UNION the anchor query
___ ALL
-- Select the recursive query fields
SELECT
emp.___,
emp.___,
emp.___,
-- Add the supervisor in each step. CAST the supervisor.
Path + '->' + ___(emp.___ AS VARCHAR(MAX))
FROM employee emp
INNER JOIN employee_Hierarchy
ON emp.Supervisor = employee_Hierarchy.ID
)
SELECT Path
FROM employee_Hierarchy
-- Select the employees Chris Feierabend and Jasmin Mentil
WHERE ___ = 16 OR ID = ___;