Inizia subitoInizia gratis

Chi è il tuo responsabile?

In questo esercizio useremo l'insieme di dati di un'organizzazione IT fornito nella tabella employee. La tabella contiene i campi ID (numero identificativo dell'impiegato), Name (nome dell'impiegato) e Supervisor (numero identificativo del responsabile).

L'organizzazione IT è composta da diversi ruoli e livelli.

A section of the entire hierarchy

L'organizzazione ha un direttore IT (ID=1, Heinz Griesser, Supervisor=0) con molti dipendenti subordinati. Sotto il direttore IT trovi il responsabile dell'architettura IT (ID=10, Andreas Sternig, Supervisor=1) con tre dipendenti subordinati. Per Andreas Sternig Supervisor=1, che è l'ID del direttore IT.

Per prima cosa vogliamo rispondere alla domanda: Chi sono i responsabili di ciascun impiegato?

Risolviamo il problema interrogando ricorsivamente l'insieme di dati.

Questo esercizio fa parte del corso

Query gerarchiche e ricorsive in SQL Server

Visualizza corso

Istruzioni dell'esercizio

  • Crea una CTE con il nome employee_hierarchy.
  • Seleziona le informazioni del direttore IT come passo iniziale della CTE filtrando sul suo Supervisor ID.
  • Esegui un join con employee per ottenere il nome del responsabile.

esercizio interattivo pratico

Prova questo esercizio completando questo codice di esempio.

-- Create the CTE employee_hierarchy
WITH ___ AS (
	SELECT
		ID, 
  		NAME,
  		Supervisor
	FROM employee
  	-- Start with the IT Director
	WHERE ___ = ___
	UNION ALL
	SELECT 
  		emp.ID,
  		emp.NAME,
  		emp.Supervisor
	FROM employee emp
  		JOIN employee_hierarchy
  		ON emp.Supervisor = employee_hierarchy.ID)
    
SELECT 
    cte.Name as EmployeeName,
    emp.Name as ManagerName
FROM employee_hierarchy as cte
	JOIN employee as emp
	-- Perform the JOIN on Supervisor and ID
	ON cte.___ = emp.___;
Modifica ed esegui il codice