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
Istruzioni dell'esercizio
- Imposta
ParentIDpari a 290 come punto di partenza. - Se
Parent.ID = ''nell'operazioneCASE, il campoParentdeve essere impostato all'attualeParentID. - Se
Parent.ID <> ''nell'operazioneCASE, l'ID del parent deve essere aggiunto all'attualeParenta ogni iterazione. - Seleziona
NameeParentdalla 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 ___;