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
Pokyny k cvičení
- Nastav
ParentIDhodnoty 290 jako výchozí bod. - Pokud je
Parent.ID = ''v operaciCASE, nastav poleParentna aktuálníParentID. - Pokud je
Parent.ID <> ''v operaciCASE, přidej ID rodiče k aktuálnímu rodiči při každé iteraci. - Vyber
NameaParentz 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 ___;