ÎncepețiÎncepe gratuit

Obține poziția în ierarhie

O problemă importantă atunci când lucrezi cu recursivitatea este urmărirea nivelului de recursivitate. În organizația IT, acest lucru înseamnă să știi poziția fiecărui angajat în ierarhie.

A section of the entire hierarchy

Pentru aceasta, vei folosi un câmp LEVEL care ține evidența pasului curent al recursivității. Trebuie să introduci câmpul în membrul ancoră și să incrementezi această valoare la fiecare pas de recursivitate în membrul recursiv.

Reține că primul nivel al ierarhiei este 0, al doilea nivel este 1 și așa mai departe.

Acest exercițiu face parte din cursul

Interogări ierarhice și recursive în SQL Server

Vezi cursul

Instrucțiuni pentru exercițiu

  • Inițializează câmpul LEVEL cu valoarea 1 la începutul recursivității.
  • Selectează informațiile directorului IT ca pas inițial al CTE-ului, filtrând după Supervisor.
  • Setează LEVEL la pasul curent al recursivității.
  • Realizează un JOIN cu CTE-ul definit pe ID-urile supervizorului și ale angajatului.

Exercițiu interactiv practic

Încearcă acest exercițiu completând acest cod de exemplu.

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;
Editează și rulează codul