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.