Mitarbeiter und Vorgesetzte
Ein klassisches Beispiel für eine Hierarchie
Mitarbeiter und Vorgesetzte ist eine kostenlose SQL Academy-Lektion auf CoddyKit. Dies ist Lektion 2 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des SQL Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der SQL Academy-Kurs umfasst insgesamt 4 Lektionen.
Was ist ein Self-Join?
Ein Self-Join liegt vor, wenn eine Tabelle mit sich selbst verknüpft wird. Das klingt ungewöhnlich, ist aber äußerst nützlich, wenn Zeilen einer Tabelle mit anderen Zeilen derselben Tabelle in Beziehung stehen.
Das klassische Beispiel ist eine employees-Tabelle, in der jeder Mitarbeiter einen Manager haben kann – und dieser Manager ebenfalls als Mitarbeiter in derselben Tabelle gespeichert ist.
Die Tabelle employees
Erstellen Sie eine einfache Tabelle employees. Jeder Mitarbeiter verfügt über eine id, einen name und eine manager_id, die auf eine andere Zeile derselben Tabelle verweist.
Wenn manager_id den Wert NULL hat, verfügt der Mitarbeiter über keinen Manager – er steht an der Spitze der Hierarchie (z. B. als CEO).
CREATE TABLE employees (
id INT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
manager_id INT REFERENCES employees(id)
);Beispieldaten einfügen
Füllen Sie die Tabelle mit der Hierarchie eines kleinen Unternehmens. Alice ist die CEO (ohne Manager). Bob und Carol unterstehen beide Alice. Dave und Eve unterstehen Bob.
INSERT INTO employees (id, name, manager_id) VALUES
(1, 'Alice', NULL),
(2, 'Bob', 1),
(3, 'Carol', 1),
(4, 'Dave', 2),
(5, 'Eve', 2),
(6, 'Frank', 3);Abfragen ohne Join
Wenn Sie einfach alle Zeilen auswählen, sehen Sie die unverarbeiteten manager_id-Nummern – nicht die Namen der Manager. Das ist schwer lesbar und für Endbenutzer nicht hilfreich.
SELECT id, name, manager_id
FROM employees;Den Self-Join schreiben
Um den Namen des Managers neben jedem Mitarbeiter anzuzeigen, verknüpfen Sie die Tabelle employees mit sich selbst. Geben Sie jeder Kopie einen anderen Alias: e für den Mitarbeiter und m für den Manager.
Die Join-Bedingung verknüpft die manager_id des Mitarbeiters mit der id des Managers.
SELECT
e.name AS employee,
m.name AS manager
FROM employees e
JOIN employees m ON e.manager_id = m.id;Mitarbeiter ohne Manager einbeziehen
Der obige INNER JOIN blendet Alice aus, weil ihre manager_id den Wert NULL hat – auf der rechten Seite gibt es keine passende Zeile. Verwenden Sie einen LEFT JOIN, um alle Mitarbeiter einzubeziehen, auch den Mitarbeiter an der Spitze der Hierarchie.
Alice wird mit NULL in der Managerspalte angezeigt.
SELECT
e.name AS employee,
m.name AS manager
FROM employees e
LEFT JOIN employees m ON e.manager_id = m.id;COALESCE für bessere Lesbarkeit verwenden
NULL in der Managerspalte kann verwirrend sein. Mit COALESCE können Sie NULL durch eine verständliche Bezeichnung wie 'Kein Manager' ersetzen und so die Ausgabe für Berichte übersichtlicher gestalten.
SELECT
e.name AS employee,
COALESCE(m.name, 'No Manager') AS manager
FROM employees e
LEFT JOIN employees m ON e.manager_id = m.id
ORDER BY manager, employee;Direkt unterstellte Mitarbeiter finden
Sie können die Abfrage umkehren und fragen: Wer untersteht einem bestimmten Manager? Das wird als Ermitteln der direkt unterstellten Mitarbeiter bezeichnet. Hier ermitteln Sie alle Mitarbeiter, die Alice direkt unterstehen (id = 1).
SELECT e.name AS direct_report
FROM employees e
WHERE e.manager_id = 1;Mitarbeiter pro Manager zählen
Durch die Kombination eines Self-Joins mit GROUP BY und COUNT können Sie sehen, wie viele direkt unterstellte Mitarbeiter jeder Manager hat. Das ist für die Arbeitslastanalyse nützlich.
SELECT
m.name AS manager,
COUNT(e.id) AS direct_reports
FROM employees e
JOIN employees m ON e.manager_id = m.id
GROUP BY m.name
ORDER BY direct_reports DESC;Zwei Ebenen tief
Um zwei Hierarchieebenen gleichzeitig anzuzeigen – den Mitarbeiter, seinen Manager und den Manager seines Managers –, können Sie die Tabelle ein drittes Mal verknüpfen. Jeder Join fügt eine weitere Hierarchieebene hinzu.
SELECT
e.name AS employee,
m.name AS manager,
gm.name AS grand_manager
FROM employees e
LEFT JOIN employees m ON e.manager_id = m.id
LEFT JOIN employees gm ON m.manager_id = gm.id;Grenzen von Self-Joins
Self-Joins eignen sich gut für feste, flache Hierarchien (1–3 Ebenen). Wenn die Tiefe unbekannt oder unbegrenzt ist – etwa bei einem Unternehmensorganigramm mit 10 Ebenen –, benötigen Sie stattdessen rekursive CTEs.
Für die meisten praktischen Abfragen zu Mitarbeitern und Managern ist der in dieser Lektion behandelte Self-Join der richtige Ansatz.
Kurzer Test
Testen Sie Ihr Verständnis von Self-Joins und der Mitarbeiter-Manager-Hierarchie.
Lektionszusammenfassung
In dieser Lektion haben Sie gelernt, wie Sie mit einem Self-Join eine klassische Mitarbeiter-Manager-Hierarchie modellieren und abfragen, die in einer einzigen Tabelle gespeichert ist.
Die wichtigsten Punkte:
- Ein Self-Join verknüpft eine Tabelle mithilfe zweier unterschiedlicher Aliase mit sich selbst.
- Die Join-Bedingung verknüpft
manager_idmitidin derselben Tabelle. - Verwenden Sie INNER JOIN, um nur Mitarbeiter mit einem Manager anzuzeigen, und LEFT JOIN, um alle einzubeziehen.
- COALESCE kann NULL-Werte von Managern durch eine verständliche Bezeichnung ersetzen.
- Für Hierarchien mit unbegrenzter Tiefe sollten Sie rekursive CTEs in Betracht ziehen.
Häufig gestellte Fragen
Ist die Lektion „Mitarbeiter und Vorgesetzte“ kostenlos?
Ja — der vollständige Text von „Mitarbeiter und Vorgesetzte“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des SQL Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der SQL Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Mitarbeiter und Vorgesetzte“?
Ein klassisches Beispiel für eine Hierarchie Du übst SQL Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um SQL Academy zu starten?
Keine Vorkenntnisse erforderlich. SQL Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 2 von 4.
Wie lange dauert die Lektion „Mitarbeiter und Vorgesetzte“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser SQL Academy-Lektion Code schreiben und ausführen?
Ja. Jede SQL Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Was ist ein Self-Join?
- Mitarbeiter und Vorgesetzte
- Zeilen derselben Tabelle vergleichen
- Grenzen von Self-Joins