PostgreSQL-Joins

Zusammenfassung: In diesem Tutorial lernen Sie verschiedene Arten von PostgreSQL-Joins kennen, darunter Inner-Join, Left-Join, Right-Join und Full-Outer-Join.

PostgreSQL-Join wird verwendet, um Spalten aus einer (Self-Join) oder mehreren Tabellen basierend auf den Werten der gemeinsamen Spalten zwischen verwandten Tabellen zu kombinieren. Die gemeinsamen Spalten sind typischerweise die Primärschlüsselspalten der ersten Tabelle und die Fremdschlüsselspalten der zweiten Tabelle.

PostgreSQL unterstützt Inner Join, Left Join, Right Join, Full Outer Join, Cross Join, Natural Join und eine spezielle Art von Join namens Self-Join.

Beispieltabellen einrichten

Angenommen, Sie haben zwei Tabellen namens basket_a und basket_b, die Früchte speichern:

Die Tabellen haben einige gemeinsame Früchte wie apple und orange.

Die folgende Anweisung liefert Daten aus der Tabelle basket_a:

Und die folgende Anweisung gibt Daten aus der Tabelle basket_b zurück:

PostgreSQL inner join

Die folgende Anweisung verknüpft die erste Tabelle (basket_a) mit der zweiten Tabelle (basket_b) durch Abgleich der Werte in den Spalten fruit_a und fruit_b:

Der Inner Join untersucht jede Zeile in der ersten Tabelle (basket_a). Er vergleicht den Wert in der Spalte fruit_a mit dem Wert in der Spalte fruit_b jeder Zeile in der zweiten Tabelle (basket_b). Wenn diese Werte gleich sind, erzeugt der Inner Join eine neue Zeile, die Spalten aus beiden Tabellen enthält, und fügt diese neue Zeile der Ergebnismenge hinzu.

Das folgende Venn-Diagramm veranschaulicht den Inner Join:

PostgreSQL left join

Die folgende Anweisung verwendet die Left-Join-Klausel, um die Tabelle basket_a mit der Tabelle basket_b zu verbinden. Im Kontext des linken Joins wird die erste Tabelle als linke Tabelle und die zweite Tabelle als rechte Tabelle bezeichnet.

Der linke Join beginnt mit der Auswahl von Daten aus der linken Tabelle. Er vergleicht die Werte in der Spalte „fruit_a“ mit den Werten in der Spalte „fruit_b“ in der Tabelle „basket_b“.

Wenn diese Werte gleich sind, erzeugt der linke Join eine neue Zeile, die Spalten aus beiden Tabellen enthält, und fügt diese neue Zeile der Ergebnismenge hinzu. (siehe Zeile #1 und #2 in der Ergebnismenge).

Sind die Werte nicht gleich, erzeugt der Left Join ebenfalls eine neue Zeile, die Spalten aus beiden Tabellen enthält, und fügt sie der Ergebnismenge hinzu. Allerdings füllt er die Spalten der rechten Tabelle (basket_b) mit Null. (siehe die Zeile #3 und #4 in der Ergebnismenge).

Das folgende Venn-Diagramm veranschaulicht den linken Join:

Um Zeilen aus der linken Tabelle auszuwählen, zu denen es keine passenden Zeilen in der rechten Tabelle gibt, verwenden Sie den Left Join mit einer WHERE-Klausel. Ein Beispiel:

Die Ausgabe ist:

Beachten Sie, dass das LEFT JOIN dasselbe ist wie das LEFT OUTER JOIN, so dass Sie sie austauschbar verwenden können.

Das folgende Venn-Diagramm veranschaulicht den linken Join, der Zeilen aus der linken Tabelle zurückgibt, die keine passenden Zeilen aus der rechten Tabelle haben:

PostgreSQL rechter Join

Der rechte Join ist eine umgekehrte Version des linken Joins. Der rechte Join beginnt mit der Auswahl von Daten aus der rechten Tabelle. Er vergleicht jeden Wert in der Spalte fruit_b jeder Zeile der rechten Tabelle mit jedem Wert in der Spalte fruit_a jeder Zeile der Tabelle fruit_a.

Wenn diese Werte gleich sind, erzeugt der rechte Join eine neue Zeile, die Spalten aus beiden Tabellen enthält.

Wenn diese Werte nicht gleich sind, erzeugt der rechte Join ebenfalls eine neue Zeile, die Spalten aus beiden Tabellen enthält. Allerdings füllt er die Spalten in der linken Tabelle mit NULL auf.

Die folgende Anweisung verwendet den rechten Join, um die Tabelle basket_a mit der Tabelle basket_b zu verbinden:

Hier ist die Ausgabe:

Das folgende Venn-Diagramm zeigt die richtige Verknüpfung:

In ähnlicher Weise können Sie Zeilen aus der rechten Tabelle abrufen, die keine passenden Zeilen aus der linken Tabelle haben, indem Sie eine WHERE-Klausel wie folgt hinzufügen:

Das RIGHT JOIN und das RIGHT OUTER JOIN sind dasselbe, daher können Sie sie austauschbar verwenden.

Das folgende Venn-Diagramm veranschaulicht den rechten Join, der Zeilen aus der rechten Tabelle zurückgibt, die keine passenden Zeilen in der linken Tabelle haben:

PostgreSQL Full Outer Join

Der Full Outer Join oder Voll-Join gibt eine Ergebnismenge zurück, die alle Zeilen aus der linken und rechten Tabelle enthält, mit den übereinstimmenden Zeilen von beiden Seiten, falls vorhanden. Falls es keine Übereinstimmung gibt, werden die Spalten der Tabelle mit NULL gefüllt.

Ausgabe:

Das folgende Venn-Diagramm veranschaulicht den vollständigen äußeren Join:

Um Zeilen in einer Tabelle zurückzugeben, die keine übereinstimmenden Zeilen in der anderen haben, verwenden Sie den Full Join mit einer WHERE-Klausel wie diese:

Hier ist das Ergebnis:

Das folgende Venn-Diagramm veranschaulicht den Full Outer Join, der Zeilen aus einer Tabelle zurückgibt, die in der anderen Tabelle nicht die entsprechenden Zeilen haben:

Das folgende Bild zeigt alle PostgreSQL-Joins, die wir bisher besprochen haben, mit der detaillierten Syntax:

In diesem Tutorial haben Sie gelernt, wie man verschiedene Arten von PostgreSQL-Joins verwendet, um Daten aus mehreren zusammengehörigen Tabellen zu kombinieren.

  • War dieses Tutorial hilfreich?
  • JaNein

Schreibe einen Kommentar

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