Ce supervizor am?
În acest exercițiu, vrem să obținem calea de la șeful aflat în vârful ierarhiei până la angajații de la baza acesteia. Pentru aceasta, trebuie să combinăm informațiile obținute la fiecare pas într-un singur câmp. Poți face asta combinând ID-urile cu ajutorul CAST(), care convertește un număr în șir de caractere. De exemplu, CAST(ID AS VARCHAR(MAX)) convertește ID din tip numeric în tip char.
Sarcina ta este să găsești calea pentru angajații Chris Feierabend cu ID=18 și Jasmin Mentil cu ID=16, până în vârful organizației. Rezultatul ar trebui să arate astfel: boss_first_level -> boss_second_level .... În rezultat vor apărea ID-urile angajaților, nu numele lor.
Acest exercițiu face parte din cursul
Interogări ierarhice și recursive în SQL Server
Instrucțiuni pentru exercițiu
- Inițializează
PathcuID-ul supervizorului (0) și condiția de start a recursiei. - Aplică
UNIONîntre membrul ancoră și definește câmpurile membrului recursiv (ID,Name,Supervisor). - Adaugă
ID-ul supervizoruluiSupervisorlaPathla fiecare pas. - Selectează ID-urile angajaților
Chris FeierabendșiJasmin Mentilîn CTE.
Exercițiu interactiv practic
Încearcă acest exercițiu completând acest cod de exemplu.
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 = ___;