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
Övningsinstruktioner
- Ange
ParentID290 som startpunkt. - Om
Parent.ID = ''iCASE-uttrycket ska fältetParentsättas till det aktuellaParentID. - Om
Parent.ID <> ''iCASE-uttrycket ska förälderns ID läggas till i det aktuellaParent-värdet för varje iteration. - Välj
NameochParentfrå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 ___;