sql / expert
Snippet
Rekursive CTEs für die hierarchische Baum-Traversierung
Rekursive Common Table Expressions (CTEs) ermöglichen es SQL, hierarchische Datenstrukturen wie Organigramme oder Dateisysteme abzufragen. Das 'Anchor-Member' definiert den Startpunkt (z.B. den CEO), während das 'Recursive-Member' die CTE wieder mit der Basistabelle verknüpft, um Untergeordnete zu finden und die Tiefe zu erhöhen, bis keine Beziehungen mehr bestehen.
snippet.sql
1
2
3
4
5
6
7
8
9
10
WITH RECURSIVE organizational_chart AS (SELECT id, manager_id, name, 1 AS depthFROM employeesWHERE manager_id IS NULLUNION ALLSELECT e.id, e.manager_id, e.name, oc.depth + 1FROM employees eJOIN organizational_chart oc ON e.manager_id = oc.id)SELECT * FROM organizational_chart ORDER BY depth, name;
Erklärung
1
WITH RECURSIVE organizational_chart AS (
Initialisiert die rekursive CTE-Struktur.
2
SELECT id, manager_id, name, 1 AS depth FROM employees WHERE manager_id IS NULL
Das Anchor-Member: Wählt den Wurzelknoten aus, der keinen Vorgesetzten hat.
3
UNION ALL
Verbindet die Anker-Ergebnisse mit den nachfolgenden rekursiven Iterationen.
4
JOIN organizational_chart oc ON e.manager_id = oc.id
Der rekursive Schritt: Verknüpft die Tabelle mit dem vorherigen Ergebnissatz, um die nächste Ebene zu finden.