Ermittle die Anzahl der Generationen
In dieser Übung schauen wir uns einen zufälligen Familienstammbaum an. Der Datensatz family besteht aus drei Spalten: ID, name und ParentID.
Deine Aufgabe ist es, die Anzahl der Generationen zu berechnen. Das erreichst du, indem du alle Generationen ausgehend von der Person mit ParentID = 101 zählst.
Dafür musst du das LEVEL der Rekursion berechnen, das die aktuelle Stufe in der Generationshierarchie darstellt. Danach zählst du die Anzahl der LEVELs mit COUNT(). Denk daran: Die Anzahl der Level entspricht der Anzahl der Generationen. Ein Level-Count von 100 bedeutet zum Beispiel, dass du 100 Generationen gefunden hast.
Diese Übung ist Teil des Kurses
Hierarchische und rekursive Abfragen in SQL Server
Anleitung zur Übung
- Initialisiere den Start der Rekursion, indem du die
ParentIDauf101setzt. - Setze
LEVELauf den aktuellen Rekursionsschritt. - Verbinde das Ankerelement per JOIN mit der CTE über die ID von Elternteil und Kind.
- Verwende
COUNT()für die Anzahl der Generationen.
Interaktive Übung
Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.
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);