Self-Joins in SQL

Gerade wenn man eine Hierarchie in einer SQL-Datenbank abbilden möchte, kommt es vor, dass man Informationen aus der selben Tabelle beziehen möchte.

Ein Beispiel:

Es existiert eine Tabelle mit einer Mitarbeiter-ID, dem Namen und der ID des Vorgesetzten:

Tabelle: tblMitarbeiter
 
id  vollername     uidmanager
-----------------------------
1   Huber Sepp     NULL
2   Maier Franz    1
3   Barbapapa John 2

Wie bekommt man nun in einer Abfrage/Sicht den vollen Namen des Managers?

Problem

Das Problem im SQL Server Manager ist dass, das man eine Tabelle nur 1x in eine Sicht hinzufügen kann. Außerdem kann man auch nicht – so wie z. B. in Access – eine Sicht in die Sicht einfügen. Zumindest geht das grafisch nicht…

Lösung

Die Lösung geht recht einfach in SQL umzusetzen, es handelt sich um so genannte „Self-Joins“.

Hier ein Beispiel:

SELECT tblMitarbeiter.id, tblMitarbeiter.vollername, tblManager.vollername AS vollernamemanager
FROM tblMitarbeiter LEFT OUTER JOIN tblMitarbeiter AS tblManager ON tblMitarbeiter.uidmanager = tblManager.id

Wir verknüpfen also die Tabelle „tblMitarbeiter“ mit der Tabelle „tblManager“, die eigentlich die Tabelle „tblMitarbeiter“ – nur mit einem anderen „AS-Namen“ ist.

Dann erscheint die „neue“ Tabelle auch in der grafischen Ansicht und man kann die Details wie gewohnt bequem zusammen klicken.

Quelle

1 Stern2 Sterne3 Sterne4 Sterne5 Sterne

Loading…
Avatar von manuel

AUTOR

manuel