A self join in SQL Server is a useful statement to use for demonstrating relationships within a single SQL Server table database. In this tutorial, I’ll show you when and how to use an SQL self join. To do that, I’ll be detailing an sql self join example where I’ll list the supervisors for all employees in the Northwind Employees sample table.
Wofür wird das SQL Self-Join verwendet?
Das Self-Join ist ein spezieller und etwas ungewöhnlicher Typ des SQL-Joins. Während die meisten Joins wie der INNER JOIN zwei oder mehr verschiedene Tabellen anhand ihrer gemeinsamen Spalten verknüpfen, verknüpft ein Self-Join eine Tabelle mit sich selbst. Im Gegensatz zu regulären Join-Operationen wird dieselbe Tabelle sowohl als linke als auch als rechte Tabelle in der Join-Operation verwendet.
Zum Beispiel könnten Sie einen Self-Join verwenden, um alle Mitarbeiter zu finden, die denselben Manager haben. Hier könnten Sie die ID eines Managers mit der ID eines Mitarbeiters abgleichen. Alternativ könnten Sie einen Self-Join verwenden, um alle Kunden zu finden, die Bestellungen für dieselben Produkte haben.
Beispiel für ein SQL Self-Join
Die folgende Abfrage zeigt ein Beispiel für den SQL-Code für einen Self-Join unter Verwendung der Northwind-Beispieldatenbank. Der Tabellenname lautet ‚Employees‘ und wie Sie vermuten können, enthält er Mitarbeiterdaten.
USE Northwind SELECT e1.EmployeeID, e1.FirstName, e1.LastName, e1.ReportsTo, e2.FirstName as ManagerFirstName, e2.LastName as ManagerLastName FROM Employees e1 LEFT OUTER JOIN Employees e2 on e1.ReportsTo = e2.EmployeeID
Dieses Beispiel für ein SQL Self-Join zeigt die Namen der Vorgesetzten für jeden Mitarbeiter.
- Hier verbinden wir die Tabelle Mitarbeiter mit sich selbst unter Verwendung der Spalte ‚ReportsTo‘ und der Spalte ‚EmployeeID‘. Da die Vorgesetzten auch Mitarbeiter sind, sind sie in derselben Mitarbeiter-Tabelle aufgeführt.
- In diesem Fall müssen die Werte in der Spalte ‚ReportsTo‘ mit den Werten in der Spalte ‚EmployeeID‘ übereinstimmen.
- In dem Ergebnis werden die Spalten ‚Vorname‘ und ‚Nachname‘ der selbstverbundenen Tabelle in ‚ManagerVorname‘ und ‚ManagerNachname‘ umbenannt.
- Die Tabelle EmployeeID verwendet einen Tabellenalias ‚e1‘, während die selbstverbundene Tabelle einen Tabellenalias ‚e2‘ verwendet.
- Die tatsächliche SQL-Selbstverknüpfungssyntax ist ein LEFT OUTER JOIN. Die ON-Klausel gibt die Spalten an, die bei der Selbstverknüpfung verwendet werden.
Sie können das Ergebnis der Selbstverknüpfungsabfrage im folgenden Bild sehen:

Diese Abfrage gibt ein Ergebnis zurück, das die EmployeeID, den Vornamen, Nachnamen, ReportsTo (EmployeeID), den ManagerVornamen und ManagerNachnamen enthält. Wenn Sie das Ergebnis prüfen, sehen Sie, dass Andrew Fuller eine EmployeeID von 2 hat und dass er auch der Vorgesetzte für die EmployeeID 1, 3, 4, 5 und 8 ist. Andrew Fuller berichtet an niemanden, daher sind sein ReportTo sowie ManagerVorname und ManagerNachname alle NULL.
Wann sollte man eine SQL-Selbstverknüpfung verwenden?
Sie sollten wirklich einen Selbstjoin verwenden, wenn eine SQL-Tabelle auf Daten in sich selbst verweist. Wie ich in diesem Artikel erklärt habe, kann ein großartiger Anwendungsfall für einen SQL-Selbstjoin eine Tabelle mit Mitarbeiterdaten sein, in der jede Zeile Informationen über Mitarbeiter und ihre Vorgesetzten enthält. In diesem Fall ermöglicht ein Selbstjoin das einfache Auffinden relevanter Informationen darüber, wie eine Organisation funktioniert.
Source:
https://petri.com/sql-self-join/