Aan de slagGa gratis aan de slag

Bepaal de positie in de hiërarchie

Een belangrijk probleem bij recursie is het bijhouden van het recursieniveau. In de IT-organisatie betekent dit dat je de positie van elke medewerker in de hiërarchie bijhoudt.

A section of the entire hierarchy

Hiervoor gebruik je een veld LEVEL dat de huidige recursiestap bijhoudt. Je moet dit veld introduceren in het ankergedeelte en bij elke recursiestap verhogen in het recursiegedeelte.

Houd er rekening mee: het eerste hiërarchieniveau is 0, het tweede niveau is 1, enzovoort.

Deze oefening maakt deel uit van de cursus

Hiërarchische en recursieve queries in SQL Server

Cursus bekijken

Oefeninstructies

  • Initialiseer het veld LEVEL op 1 bij de start van de recursie.
  • Selecteer de informatie van de IT-directeur als de eerste stap van de CTE door te filteren op Supervisor.
  • Stel LEVEL in op de huidige recursiestap.
  • Voer een JOIN uit met de gedefinieerde CTE op de ID’s van de supervisor en de medewerker.

Praktische interactieve oefening

Probeer deze oefening eens door deze voorbeeldcode in te vullen.

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;
Code bewerken en uitvoeren