Inizia subitoInizia gratis

Raccogli tutti i possibili parent in un unico campo?

Il tuo compito finale in questo capitolo è trovare tutti i possibili parent a partire da un ID e combinare gli ID di tutte le generazioni trovate in un unico campo.

Per farlo, cercherai ricorsivamente tutti i possibili membri e aggiungerai queste informazioni in un solo campo. Devi usare l'operatore CAST() per combinare gli ID in una stringa. Cercherai tutti i membri della famiglia a partire da ID = 290. In totale ci sono 300 record nella tabella family.

Questo esercizio fa parte del corso

Query gerarchiche e ricorsive in SQL Server

Visualizza corso

Istruzioni dell'esercizio

  • Imposta ParentID pari a 290 come punto di partenza.
  • Se Parent.ID = '' nell'operazione CASE, il campo Parent deve essere impostato all'attuale ParentID.
  • Se Parent.ID <> '' nell'operazione CASE, l'ID del parent deve essere aggiunto all'attuale Parent a ogni iterazione.
  • Seleziona Name e Parent dalla CTE definita.

esercizio interattivo pratico

Prova questo esercizio completando questo codice di esempio.

WITH tree AS (
	SELECT 
  		ID,
  		Name, 
  		ParentID, 
  		CAST('0' AS VARCHAR(MAX)) as Parent
	FROM family
  	-- Initialize the ParentID to 290 
  	WHERE ___ = ___    
    UNION ALL
    SELECT 
  		Next.ID, 
  		Next.Name, 
  		Parent.ID,
    	CAST(CASE WHEN Parent.ID = ''
        	      -- Set the Parent field to the current ParentID
                  THEN(CAST(Next.___ AS VARCHAR(MAX)))
        	 -- Add the ParentID to the current Parent in each iteration
             ELSE(Parent.Parent + ' -> ' + CAST(Next.___ AS VARCHAR(MAX)))
    		 END AS VARCHAR(MAX))
        FROM family AS Next
        	INNER JOIN tree AS Parent 
  			ON Next.ParentID = Parent.ID)
        
-- Select the Name, Parent from tree
SELECT ___, ___
FROM ___;
Modifica ed esegui il codice