Chi è il mio supervisore?
In questo esercizio vogliamo ottenere il percorso dal capo in cima alla gerarchia fino ai dipendenti in fondo alla gerarchia. Per questo compito, dobbiamo combinare in un unico campo le informazioni ottenute a ogni passaggio. Puoi farlo unendo gli ID usando CAST() per passare da numero a stringa. Ad esempio, CAST(ID AS VARCHAR(MAX)) converte ID di tipo numerico in tipo char.
Il compito ora è trovare il percorso per i dipendenti Chris Feierabend con ID=18 e Jasmin Mentil con ID=16 fino al vertice dell'organizzazione. L'output dovrebbe essere simile a: boss_first_level -> boss_second_level .... Devono essere selezionati gli ID dei dipendenti e non i loro nomi.
Questo esercizio fa parte del corso
Query gerarchiche e ricorsive in SQL Server
Istruzioni dell'esercizio
- Inizializza
Pathall'IDdel supervisore (0) e la condizione iniziale della ricorsione. - Esegui
UNIONcon il membro di ancoraggio e definisci i campi del membro ricorsivo (ID,Name,Supervisor). - Aggiungi l'ID del supervisore
SupervisoraPatha ogni passaggio. - Seleziona gli ID dei dipendenti
Chris FeierabendeJasmin Mentilnella CTE.
esercizio interattivo pratico
Prova questo esercizio completando questo codice di esempio.
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 = ___;