SQLite Self-Join
Zusammenfassung: In diesem Tutorial erfahren Sie mehr über eine spezielle Art von Join namens SQLite Self-Join, mit der Sie eine Tabelle mit sich selbst verbinden können.
Beachten Sie, dass Sie mit INNER JOIN
und LEFT JOIN
Klauseln vertraut sein sollten, bevor Sie mit diesem Tutorial fortfahren.
Einführung in SQLite Self-Join
Der Self-Join ist eine spezielle Art von Joins, mit denen Sie eine Tabelle mit der LEFT JOIN
oder INNER JOIN
Klausel verbinden können. Sie verwenden Self-Join, um eine Ergebnismenge zu erstellen, die die Zeilen mit den anderen Zeilen in derselben Tabelle verbindet.
Da Sie in einer Abfrage nicht mehrmals auf dieselbe Tabelle verweisen können, müssen Sie einen Tabellenalias verwenden, um der Tabelle einen anderen Namen zuzuweisen, wenn Sie Self-Join verwenden.
Der Self-Join vergleicht Werte derselben oder verschiedener Spalten in derselben Tabelle. Nur eine Tabelle ist am Self-Join beteiligt.
Sie verwenden häufig Self-Join, um in einer Tabelle gespeicherte Eltern / Kind-Beziehungen abzufragen oder laufende Summen zu erhalten.
SQLite Self-Join-Beispiele
Wir werden die employees
-Tabelle in der Beispieldatenbank zur Demonstration verwenden.
Die employees
Tabelle speichert nicht nur Mitarbeiterdaten, sondern auch Organisationsdaten. Die Spalte ReportsTo
gibt die Berichtsbeziehung zwischen Mitarbeitern an.
Wenn ein Mitarbeiter einem Manager Bericht erstattet, entspricht der Wert der Spalte ReportsTo
der Zeile des Mitarbeiters dem Wert der Spalte EmployeeId
der Zeile des Managers. Falls ein Mitarbeiter niemandem Bericht erstattet, lautet die Spalte ReportsTo
NULL
.
Um die Informationen darüber zu erhalten, wer der direkte Bericht von wem ist, verwenden Sie die folgende Anweisung:
Probieren Sie es aus
Die Anweisung verwendete die INNER JOIN
Klausel, um die employees
zu sich selbst. Die employees
-Tabelle hat zwei Rollen: Mitarbeiter und Manager.
Da wir die INNER JOIN
-Klausel verwendet haben, um die employees
-Tabelle mit sich selbst zu verknüpfen, hat die Ergebnismenge nicht die Zeile, deren Managerspalte einen NULL
-Wert enthält.
Beachten Sie, dass der Verkettungsoperator ||
mehrere Zeichenfolgen zu einer einzigen Zeichenfolge verkettet. In diesem Beispiel verwenden wir den Verkettungsoperator, um die vollständigen Namen der Mitarbeiter zu ermitteln, indem wir Vorname, Leerzeichen und Nachname verketten.
Falls Sie den CEO abfragen möchten, der niemandem Bericht erstattet, müssen Sie die Klausel INNER JOIN
in der obigen Abfrage in LEFT JOIN
ändern.
Andrew Adams
ist der CEO, weil er niemanden meldet.
Sie können die Self-Join-Technik verwenden, um die Mitarbeiter in derselben Stadt wie die folgende Abfrage zu finden:
Versuchen Sie es
Die Join-Bedingung hat zwei Ausdrücke:
-
e1.city = e2.city
sicherstellen, dass sich beide Mitarbeiter in derselben Stadt befinden -
e.firstname <> e2.firstname AND e1.lastname <> e2.lastname
sicherstellen, dasse1
unde2
nicht derselbe Mitarbeiter sind, mit der Annahme, dass es keine Mitarbeiter gibt die den gleichen Vor- und Nachnamen haben.
In diesem Tutorial haben wir Ihnen gezeigt, wie Sie die SQLite Self-Join-Technik verwenden, um eine Tabelle mit sich selbst zu verbinden.
- War dieses Tutorial hilfreich ?
- JaNein