Obtenir la position dans la hiérarchie
Un enjeu important avec la récursivité est de suivre le niveau de récursion. Dans l'équipe des TI, cela signifie garder la trace de la position de chaque employé dans la hiérarchie.

Pour ce faire, vous utiliserez un champ LEVEL qui garde le compte de l'étape de récursion en cours. Vous devez introduire ce champ dans le membre d'ancrage et incrémenter cette valeur à chaque étape de récursion dans le membre récursif.
N'oubliez pas : le premier niveau de la hiérarchie est 0, le deuxième niveau est 1, et ainsi de suite.
Cette activité fait partie du cours
Requêtes hiérarchiques et récursives dans SQL Server
Instructions de l’exercice
- Initialisez le champ
LEVELà 1 au début de la récursivité. - Sélectionnez l'information de la directrice ou du directeur TI comme étape initiale de la CTE en filtrant sur
Supervisor. - Définissez
LEVELà l'étape de récursion actuelle. - Effectuez un
JOINavec la CTE définie sur lesIDdu supérieur et de l'employé.
Exercice interactif pratique
Essayez cet exercice en complétant ce code d’exemple.
WITH employee_hierarchy AS (
SELECT
ID,
NAME,
Supervisor,
-- Initialize the field LEVEL
___ as LEVEL
FROM employee
-- Start with the supervisor ID of the IT Director
WHERE ___ = ___
UNION ALL
SELECT
emp.ID,
emp.NAME,
emp.Supervisor,
-- Increment LEVEL by 1 each step
___ + 1
FROM employee emp
JOIN employee_hierarchy
-- JOIN on supervisor and ID
ON emp.___ = employee_hierarchy.___)
SELECT
cte.Name, cte.Level,
emp.Name as ManagerID
FROM employee_hierarchy as cte
JOIN employee as emp
ON cte.Supervisor = emp.ID
ORDER BY Level;