Zacznij terazZacznij za darmo

Wyznacz pozycję w hierarchii

Ważnym wyzwaniem przy pracy z rekurencją jest śledzenie aktualnego poziomu rekurencji. W strukturze organizacji IT oznacza to monitorowanie pozycji każdego pracownika w hierarchii.

A section of the entire hierarchy

Do tego celu użyjesz pola LEVEL, które przechowuje numer bieżącego kroku rekurencji. Musisz wprowadzić to pole w członie bazowym i zwiększać jego wartość o jeden na każdym kolejnym kroku rekurencji w członie rekurencyjnym.

Pamiętaj, że pierwszy poziom hierarchii to 0, drugi poziom to 1 i tak dalej.

To ćwiczenie jest częścią kursu

Hierarchiczne i rekurencyjne zapytania w SQL Server

Zobacz kurs

Instrukcje do ćwiczenia

  • Zainicjuj pole LEVEL wartością 1 na początku rekurencji.
  • Wybierz informacje o dyrektorze IT jako krok początkowy CTE, filtrując po kolumnie Supervisor.
  • Ustaw LEVEL na numer bieżącego kroku rekurencji.
  • Wykonaj JOIN ze zdefiniowanym CTE, łącząc identyfikatory ID przełożonego i pracownika.

Interaktywne ćwiczenie praktyczne

Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.

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;
Edytuj i uruchom kod