capypad
0 Tage Serie
sql / expert
Snippet

Rekursive Common Table Expressions (CTEs)

Rekursive CTEs werden verwendet, um hierarchische Datenstrukturen wie Organigramme oder Stücklisten zu durchlaufen. Sie bestehen aus einem Anker-Element und einem rekursiven Element, die durch UNION ALL verbunden sind.

snippet.sql
sql
1
2
3
4
5
6
7
8
9
10
WITH RECURSIVE subordinates AS (
SELECT employee_id, manager_id, name
FROM employees
WHERE manager_id IS NULL
UNION ALL
SELECT e.employee_id, e.manager_id, e.name
FROM employees e
INNER JOIN subordinates s ON s.employee_id = e.manager_id
)
SELECT * FROM subordinates;
Erklärung
1
WITH RECURSIVE subordinates AS
Definiert den Namen der CTE und markiert sie als rekursiv.
2
WHERE manager_id IS NULL
Das Anker-Element: Wählt den Startpunkt aus (z. B. den CEO).
3
INNER JOIN subordinates s ON s.employee_id = e.manager_id
Das rekursive Element: Verbindet die Tabelle erneut mit der CTE, um die nächste Ebene der Hierarchie zu finden.