Kto jest moim przełożonym?
W tym ćwiczeniu chcemy wyznaczyć ścieżkę od szefa na szczycie hierarchii do pracowników na jej najniższym poziomie. Aby to zrobić, musimy połączyć informacje uzyskane w każdym kroku w jedno pole. Można to osiągnąć, łącząc wartości ID za pomocą CAST() – z liczby na ciąg znaków. Przykładowo CAST(ID AS VARCHAR(MAX)) konwertuje ID z typu liczbowego na typ znakowy.
Zadanie polega na znalezieniu ścieżki dla pracowników Chris Feierabend z ID=18 oraz Jasmin Mentil z ID=16 – aż do samego szczytu organizacji. Wynik powinien mieć następującą postać: boss_first_level -> boss_second_level .... W zapytaniu należy wybrać identyfikatory pracowników, a nie ich imiona i nazwiska.
To ćwiczenie jest częścią kursu
Hierarchiczne i rekurencyjne zapytania w SQL Server
Instrukcje do ćwiczenia
- Zainicjuj
PathwartościąIDprzełożonego (0) oraz warunkiem startowym rekurencji. - Użyj
UNION, aby połączyć człon kotwiczący, i zdefiniuj pola członu rekurencyjnego (ID,Name,Supervisor). - Dodaj
IDprzełożonego (Supervisor) doPathw każdym kroku rekurencji. - Wybierz identyfikatory pracowników
Chris FeierabendiJasmin Mentilw CTE.
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
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 = ___;