Aan de slagGa gratis aan de slag

Alle mogelijke ouders in één veld ophalen?

Je laatste taak in dit hoofdstuk is om alle mogelijke ouders te vinden vanaf één ID en de ID's van alle gevonden generaties in één veld te combineren.

Hiervoor ga je recursief zoeken naar alle mogelijke leden en deze informatie aan één veld toevoegen. Je moet de CAST()-operator gebruiken om ID's samen te voegen tot één string. Je zoekt naar alle familieleden vanaf ID = 290. In totaal zijn er 300 records in de tabel family.

Deze oefening maakt deel uit van de cursus

Hiërarchische en recursieve queries in SQL Server

Cursus bekijken

Oefeninstructies

  • Stel de ParentID van 290 in als startpunt.
  • Als Parent.ID = '' in de CASE-uitdrukking, moet het veld Parent worden ingesteld op de huidige ParentID.
  • Als Parent.ID <> '' in de CASE-uitdrukking, moet de Parent ID bij elke iteratie aan de huidige Parent worden toegevoegd.
  • Selecteer Name en Parent uit de gedefinieerde CTE.

Praktische interactieve oefening

Probeer deze oefening eens door deze voorbeeldcode in te vullen.

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 bewerken en uitvoeren