Articles

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 ReportsToNULL.

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, dass e1 und e2 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

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.