ÎncepețiÎncepe gratuit

Toți părinții posibili într-un singur câmp?

Ultima ta sarcină din acest capitol este să găsești toți părinții posibili pornind de la un singur ID și să combini ID-urile tuturor generațiilor găsite într-un singur câmp.

Pentru a face acest lucru, vei căuta recursiv toți membrii posibili și vei adăuga aceste informații într-un singur câmp. Va trebui să folosești operatorul CAST() pentru a combina ID-urile într-un șir de caractere. Vei căuta toți membrii familiei începând de la ID = 290. În total, există 300 de înregistrări în tabelul family.

Acest exercițiu face parte din cursul

Interogări ierarhice și recursive în SQL Server

Vezi cursul

Instrucțiuni pentru exercițiu

  • Setează ParentID 290 ca punct de plecare.
  • Dacă Parent.ID = '' în operația CASE, câmpul Parent trebuie setat la ParentID-ul curent.
  • Dacă Parent.ID <> '' în operația CASE, ID-ul părintelui trebuie adăugat la valoarea curentă a câmpului Parent la fiecare iterație.
  • Selectează Name și Parent din CTE-ul definit.

Exercițiu interactiv practic

Încearcă acest exercițiu completând acest cod de exemplu.

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 ___;
Editează și rulează codul