LoslegenKostenlos starten

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

<Kurs>Hierarchische und rekursive Abfragen in SQL Server</Kurs>
Kurs ansehen

Übungsanweisungen

  • Setze die ParentID von 290 als Startpunkt.
  • Wenn Parent.ID = '' in der CASE-Operation, muss das Feld Parent auf die aktuelle ParentID gesetzt werden.
  • Wenn Parent.ID <> '' in der CASE-Operation, muss die Parent-ID in jeder Iteration zum aktuellen Parent hinzugefügt werden.
  • Wähle Name und Parent aus der definierten CTE aus.

Interaktive praktische Übung

Versuche dich an dieser Übung, indem du diesen Beispielcode vervollständigst.

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 ___;
Code bearbeiten und ausführen