Welke leidinggevende heb ik?
In deze oefening wil je het pad krijgen van de baas bovenaan de hiërarchie naar de werknemers onderaan de hiërarchie. Voor deze taak moeten we de informatie die in elke stap wordt verkregen samenvoegen in één veld. Dat kan door de IDs te combineren met CAST() van getal naar string. Een voorbeeld is CAST(ID AS VARCHAR(MAX)) om ID van het type getal om te zetten naar het type char.
De taak is nu om het pad te vinden voor werknemers Chris Feierabend met ID=18 en Jasmin Mentil met ID=16 helemaal tot aan de top van de organisatie. De output moet er als volgt uitzien: boss_first_level -> boss_second_level .... De ID’s van de werknemers, en niet hun namen, moeten geselecteerd worden.
Deze oefening maakt deel uit van de cursus
Hiërarchische en recursieve queries in SQL Server
Oefeninstructies
- Initialiseer
Pathmet deIDvan de leidinggevende (0) en de startconditie van de recursie. UNIONde anchor-member en definieer de velden van de recursieve member (ID,Name,Supervisor).- Voeg in elke stap de ID van de leidinggevende
Supervisortoe aan hetPath. - Selecteer de ID’s van werknemers
Chris FeierabendenJasmin Mentilin de CTE.
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
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 = ___;