Was ist SELF JOIN und wann würden Sie es verwenden?

Mögliches Duplikat: sql: self-joins erklärt

Was ist eine Selbstverknüpfung und wann würden Sie sie verwenden? Ich verstehe Self-Joins nicht, also wäre eine Erklärung für Laien mit einem Beispiel toll.

Lösung

Sie verwenden einen Self-Join, wenn eine Tabelle auf Daten in sich selbst verweist.

Eine Tabelle "Mitarbeiter" kann z. B. eine Spalte "SupervisorID" haben, die auf den Mitarbeiter verweist, der der Vorgesetzte des aktuellen Mitarbeiters ist.

Um die Daten abzufragen und Informationen für beide Personen in einer Zeile zu erhalten, können Sie einen Self-Join wie folgt durchführen:

select e1.EmployeeID, 
    e1.FirstName, 
    e1.LastName,
    e1.SupervisorID, 
    e2.FirstName as SupervisorFirstName, 
    e2.LastName as SupervisorLastName
from Employee e1
left outer join Employee e2 on e1.SupervisorID = e2.EmployeeID
Kommentare (5)

Ein Self-Join ist einfach eine Verknüpfung einer Tabelle mit sich selbst. Es gibt kein "SELF JOIN"-Schlüsselwort, Sie schreiben einfach eine gewöhnliche Verknüpfung, bei der beide beteiligten Tabellen die gleiche Tabelle sind. Dabei ist zu beachten, dass beim Self-Join ein Alias für die Tabelle verwendet werden muss, da der Tabellenname sonst mehrdeutig wäre.

Dies ist nützlich, wenn Sie Paare von Zeilen aus derselben Tabelle korrelieren wollen, z. B. eine Eltern-Kind-Beziehung. Die folgende Abfrage gibt die Namen aller unmittelbaren Unterkategorien der Kategorie "Küche" zurück.

SELECT T2.name
FROM category T1
JOIN category T2
ON T2.parent = T1.id
WHERE T1.name = 'Kitchen'
Kommentare (2)

Sie würden einen Self-Join auf eine Tabelle verwenden, die auf sich selbst verweist - z. B. eine Tabelle mit Angestellten, in der managerid ein Fremdschlüssel zu employeeid in derselben Tabelle ist.

Beispiel:

SELECT E.name, ME.name AS manager
FROM dbo.Employees E
LEFT JOIN dbo.Employees ME
ON ME.employeeid = E.managerid
Kommentare (1)