Začněte nyníZačněte zdarma

Všichni možní předci v jednom poli?

Tvým posledním úkolem v této kapitole je najít všechny možné předky začínající od jednoho ID a sloučit ID všech nalezených generací do jednoho pole.

Budeš rekurzivně prohledávat všechny možné členy a přidávat tato data do jednoho pole. Pro sloučení ID do řetězce použiješ operátor CAST(). Hledání rodinných příslušníků zahájíš od ID = 290. Tabulka family obsahuje celkem 300 záznamů.

Toto cvičení je součástí kurzu

Hierarchical and Recursive Queries in SQL Server

Zobrazit kurz

Pokyny k cvičení

  • Nastav ParentID hodnoty 290 jako výchozí bod.
  • Pokud je Parent.ID = '' v operaci CASE, nastav pole Parent na aktuální ParentID.
  • Pokud je Parent.ID <> '' v operaci CASE, přidej ID rodiče k aktuálnímu rodiči při každé iteraci.
  • Vyber Name a Parent z definovaného CTE.

Interaktivní cvičení na vyzkoušení si v praxi

Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.

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 ___;
Upravit a spustit kód