Obtenir la position dans la hiérarchie
Un enjeu important avec la récursivité est de suivre le niveau de récursion. Dans l’organisation IT, cela revient à suivre la position de chaque employé dans la hiérarchie.

Pour cela, vous allez utiliser un champ LEVEL qui mémorise 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.
Gardez en tête que le premier niveau de la hiérarchie est 0, le deuxième est 1, et ainsi de suite.
Cet exercice fait partie du cours
<cours>Requêtes hiérarchiques et récursives dans SQL Server</cours>Instructions de l’exercice
- Initialisez le champ
LEVELà 1 au début de la récursivité. - Sélectionnez les informations du directeur IT comme étape initiale de la CTE en filtrant sur
Supervisor. - Définissez
LEVELsur 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;