Kom igångKom igång gratis

Hämta alla möjliga föräldrar i ett fält

Din sista uppgift i det här kapitlet är att hitta alla möjliga föräldrar med start från ett ID och samla ID:na för alla hittade generationer i ett enda fält.

För att göra detta söker du rekursivt efter alla möjliga medlemmar och lägger till informationen i ett fält. Du behöver använda operatorn CAST() för att kombinera ID:n till en sträng. Du söker efter alla familjemedlemmar med start från ID = 290. Tabellen family innehåller totalt 300 poster.

Den här övningen är en del av kursen

Hierarkiska och rekursiva frågor i SQL Server

Visa kurs

Övningsinstruktioner

  • Ange ParentID 290 som startpunkt.
  • Om Parent.ID = '' i CASE-uttrycket ska fältet Parent sättas till det aktuella ParentID.
  • Om Parent.ID <> '' i CASE-uttrycket ska förälderns ID läggas till i det aktuella Parent-värdet för varje iteration.
  • Välj Name och Parent från den definierade CTE:n.

Interaktiv övning med praktiskt arbete

Testa den här övningen genom att slutföra den här exempelkoden.

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 ___;
Redigera och kör kod