Alle möglichen Eltern in einem Feld sammeln?
Deine letzte Aufgabe in diesem Kapitel ist es, ausgehend von einer ID alle möglichen Eltern zu finden und die IDs aller gefundenen Generationen in einem Feld zu kombinieren.
Dafür suchst du rekursiv nach allen passenden Mitgliedern und fügst diese Information in einem Feld zusammen. Du musst den Operator CAST() verwenden, um IDs zu einer Zeichenkette zu verbinden.
Du suchst nach allen Familienmitgliedern beginnend bei ID = 290. Insgesamt gibt es 300 Einträge in der Tabelle family.
Diese Übung ist Teil des Kurses
Hierarchische und rekursive Abfragen in SQL Server
Anleitung zur Übung
- Setze die
ParentIDvon 290 als Startpunkt. - Wenn
Parent.ID = ''in derCASE-Operation, muss das FeldParentauf die aktuelleParentIDgesetzt werden. - Wenn
Parent.ID <> ''in derCASE-Operation, muss die Parent-ID in jeder Iteration zum aktuellenParenthinzugefügt werden. - Wähle
NameundParentaus der definierten CTE aus.
Interaktive Übung
Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.
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 ___;