CommencerCommencez gratuitement

Quel superviseur ai-je ?

Dans cet exercice, nous voulons obtenir le chemin allant du patron au sommet de la hiérarchie jusqu’aux employés tout en bas. Pour cela, nous devons concaténer, à chaque étape, les informations obtenues dans un seul champ. Vous pouvez le faire en combinant les ID en utilisant CAST() pour passer du nombre à la chaîne. Par exemple, CAST(ID AS VARCHAR(MAX)) permet de convertir ID de type numérique en type texte.

La tâche consiste maintenant à trouver le chemin pour les employés Chris Feierabend avec ID=18 et Jasmin Mentil avec ID=16 jusqu’au sommet de l’organisation. La sortie doit ressembler à ceci : boss_first_level -> boss_second_level .... Sélectionnez les IDs des employés et non leurs noms.

Cet exercice fait partie du cours

<cours>Requêtes hiérarchiques et récursives dans SQL Server</cours>
Voir le cours

Instructions de l’exercice

  • Initialisez Path avec l’ID du superviseur (0) et la condition de départ de la récursion.
  • Faites un UNION du membre d’ancrage et définissez les champs du membre récursif (ID, Name, Supervisor).
  • Ajoutez l’ID du superviseur Supervisor à Path à chaque étape.
  • Sélectionnez, dans la CTE, les IDs des employés Chris Feierabend et Jasmin Mentil.

Exercice interactif pratique

Essayez cet exercice en complétant ce code d’exemple.

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 = ___;
Modifier et exécuter le code