Inizia subitoInizia gratis

Ottieni la posizione nella gerarchia

Un problema importante quando si lavora con la ricorsione è tenere traccia del livello di ricorsione. Nell'organizzazione IT, questo significa monitorare la posizione di ciascun dipendente nella gerarchia.

A section of the entire hierarchy

Per questo userai un campo LEVEL che tiene traccia dell'attuale passo di ricorsione. Devi introdurre il campo nel membro di ancoraggio e incrementarlo a ogni passo di ricorsione nel membro ricorsivo.

Ricorda: il primo livello della gerarchia è 0, il secondo livello è 1 e così via.

Questo esercizio fa parte del corso

Query gerarchiche e ricorsive in SQL Server

Visualizza corso

Istruzioni dell'esercizio

  • Inizializza il campo LEVEL a 1 all'inizio della ricorsione.
  • Seleziona le informazioni del direttore IT come passo iniziale della CTE filtrando su Supervisor.
  • Imposta LEVEL al passo di ricorsione corrente.
  • Esegui un JOIN con la CTE definita sugli ID del supervisore e del dipendente.

esercizio interattivo pratico

Prova questo esercizio completando questo codice di esempio.

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;
Modifica ed esegui il codice