CommencezCommencez gratuitement

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.

Une section de toute 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

Voir le cours

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 JOIN avec la CTE définie sur les ID du 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;
Modifier et exécuter le code