Zacznij terazZacznij za darmo

Wszystkie możliwe elementy nadrzędne w jednym polu?

Ostatnim zadaniem w tym rozdziale jest znalezienie wszystkich możliwych elementów nadrzędnych, zaczynając od jednego ID, i połączenie ID wszystkich znalezionych generacji w jedno pole.

W tym celu rekurencyjnie wyszukasz wszystkich możliwych członków i dodasz te informacje do jednego pola. Musisz użyć operatora CAST(), aby połączyć wartości ID w ciąg znaków. Wyszukiwanie obejmie wszystkich członków rodziny, zaczynając od ID = 290. Tabela family zawiera łącznie 300 wpisów.

To ćwiczenie jest częścią kursu

Hierarchiczne i rekurencyjne zapytania w SQL Server

Zobacz kurs

Instrukcje do ćwiczenia

  • Ustaw ParentID równe 290 jako punkt startowy.
  • Jeśli Parent.ID = '' w operacji CASE, pole Parent powinno zostać ustawione na bieżące ParentID.
  • Jeśli Parent.ID <> '' w operacji CASE, ID elementu nadrzędnego powinno być dodawane do bieżącego elementu Parent w każdej iteracji.
  • Wybierz pola Name i Parent ze zdefiniowanego CTE.

Interaktywne ćwiczenie praktyczne

Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.

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 ___;
Edytuj i uruchom kod