Het aantal generaties bepalen
In deze oefening bekijken we een willelijke stamboom. De gegevensset family bestaat uit drie kolommen: ID, name en ParentID.
Jouw taak is om het aantal generaties te berekenen. Dat doe je door alle generaties te tellen vanaf de persoon met ParentID = 101.
Voor deze taak moet je de LEVEL van de recursie berekenen, die het huidige niveau in de generatiestructuur weergeeft. Daarna tel je het aantal LEVELs met COUNT(). Onthoud dat de telling van het niveau gelijkstaat aan het aantal generaties; een levelteling van 100 betekent bijvoorbeeld dat je 100 generaties hebt gevonden.
Deze oefening maakt deel uit van de cursus
Hiërarchische en recursieve queries in SQL Server
Oefeninstructies
- Start de recursie door
ParentIDin te stellen op101. - Zet
LEVELop de huidige recursiestap. - Join het anchor-gedeelte met de CTE op de ID van de ouder en het kind.
- Gebruik
COUNT()om het aantal generaties te tellen.
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
WITH children AS (
SELECT
ID,
Name,
ParentID,
0 as LEVEL
FROM family
-- Set the targeted parent as recursion start
WHERE ___ = ___
UNION ALL
SELECT
child.ID,
child.NAME,
child.ParentID,
-- Increment LEVEL by 1 each step
___ + ___
FROM family child
INNER JOIN children
-- Join the anchor query with the CTE
ON child.___ = children.___)
SELECT
-- Count the number of generations
___(___) as Generations
FROM children
OPTION(MAXRECURSION 300);