Kom igångKom igång gratis

Hämta hierarkinivån

Ett vanligt problem vid rekursion är att hålla reda på vilket rekursionssteg man befinner sig på. I IT-organisationen innebär det att spåra varje anställds position i hierarkin.

En del av hela hierarkin

För detta använder du ett LEVEL-fält som håller reda på det aktuella rekursionssteget. Du behöver introducera fältet i ankarmedlemmen och öka värdet för varje rekursionssteg i rekursionsmedlemmen.

Tänk på att den första hierarkinivån är 0, den andra nivån är 1 och så vidare.

Den här övningen är en del av kursen

Hierarkiska och rekursiva frågor i SQL Server

Visa kurs

Övningsinstruktioner

  • Initiera fältet LEVEL till 1 i början av rekursionen.
  • Välj IT-direktörens information som startsteg i CTE:n genom att filtrera på Supervisor.
  • Sätt LEVEL till det aktuella rekursionssteget.
  • Utför en JOIN med den definierade CTE:n på ID:n för chefen och den anställde.

Interaktiv övning med praktiskt arbete

Testa den här övningen genom att slutföra den här exempelkoden.

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;
Redigera och kör kod