Verknüpfen Sie drei Tabellen in SQL

Verknupfen Sie Drei Tabellen In Sql



In relationalen Datenbanken ist die Aufgabe, Daten aus mehreren Tabellen abzurufen, äußerst häufig. Abhängig vom Zielergebnis müssen dabei mehrere Tabellen zu einer Einheit zusammengefügt und die resultierenden Daten abgerufen werden.

Wenn es um Verknüpfungen geht, arbeiten die meisten von uns hauptsächlich mit der Beschränkung auf zwei Tabellen und dergleichen. Allerdings ist es üblich, drei Tabellen zu verknüpfen, um ein aussagekräftigeres Datenlayout und Einblicke zu erhalten. Nehmen Sie zum Beispiel an, dass Sie eine Liste von Filmen, den entsprechenden Verleihbestand und die tatsächlichen Verleihdetails abrufen möchten. Jede dieser Einheiten wie Filme, Inventar und Leihdetails befindet sich in einzelnen Tabellen.

In diesem Tutorial führen wir Sie durch die verschiedenen Verknüpfungen und Techniken, mit denen Sie drei Tabellen in SQL verknüpfen können.







Anforderungen:

Zu Demonstrationszwecken verwenden wir MySQL Version 80 und die Sakila-Beispieldatenbank. Um mitzumachen, können Sie die Sakila-Datenbank herunterladen und auf Ihrem MySQL-Server einrichten. Fühlen Sie sich frei, jeden anderen Datensatz zu verwenden, den Sie für anwendbar halten.



Arten von Joins in SQL

Bevor wir uns mit der Anwendung der Joins befassen, besprechen wir zunächst die verschiedenen Arten von Joins, die in SQL-Datenbanken verfügbar sind.



INNER JOIN

Der erste Join-Typ ist ein INNER JOIN. Dieser Join-Typ gibt nur die Zeilen zurück, die in beiden Tabellen einen übereinstimmenden Wert enthalten. Es handelt sich um eine sehr verbreitete Art der Verknüpfung und die einfachste Art der Verknüpfung zweier Tabellen.





Die Syntax lautet wie folgt:

Spalten auswählen

AUS Tabelle1

INNER JOIN Tabelle2 AN table1.column_name = table2.column_name;

LINKS BEITRETEN

Bei einem LEFT JOIN werden alle Zeilen aus der linken Tabelle und die übereinstimmenden Zeilen aus der rechten Tabelle zurückgegeben. Wenn es keine passenden Werte aus der rechten Tabelle gibt, fügt der Join an ihrer Stelle die NULL-Werte hinzu.



Die Syntax lautet wie folgt:

Spalten auswählen

AUS Tabelle1

LEFT JOIN Tabelle2 AN table1.column_name = table2.column_name;

RICHTIG BEITRETEN

Wie Sie sich vorstellen können, ist der RIGHT JOIN das Gegenteil des LEFT JOIN. Diese Art von Joins gibt alle Zeilen der rechten Tabelle und nur die passenden Zeilen der linken Tabelle zurück. Wenn in der linken Tabelle keine übereinstimmenden Zeilen vorhanden sind, fügt der Join die NULL-Werte hinzu.

Das Folgende ist die Syntax eines RIGHT JOIN:

Spalten auswählen

AUS Tabelle1

RIGHT JOIN Tabelle2 AN table1.column_name = table2.column_name;

VOLLSTÄNDIGE ÄUSSERE VERBINDUNG

Der nächste Join-Typ, den Sie in SQL-Datenbanken finden, ist ein FULL OUTER JOIN. Dieser Join-Typ gibt alle Zeilen zurück, wenn entweder in der rechten oder linken Tabelle eine Übereinstimmung vorliegt. Wenn in keinem der beiden Werte ein übereinstimmender Wert vorhanden ist, wird für die Spalten der Tabelle ohne Übereinstimmung NULL zurückgegeben.

Im Folgenden wird die Syntax eines FULL OUTER JOIN veranschaulicht:

Spalten auswählen

AUS Tabelle1

FULL OUTER JOIN Tabelle2 AN table1.column_name = table2.column_name;

Beachten Sie, dass nicht alle Datenbank-Engines FULL OUTER JOINS unterstützen. Um dies zu erreichen, müssen Sie möglicherweise mit anderen Arten von JOINS oder Unterabfragen arbeiten.

Beispiele:

Lassen Sie uns einige Beispiele untersuchen, wie wir diese Art von Verknüpfungen verwenden können, um drei Tabellen in SQL zu verknüpfen.

Beispiel 1: Verwendung des INNER JOIN

Wir beginnen mit einem INNER JOIN. Angenommen, wir möchten eine Liste der Filme, den Verleihbestand und die entsprechenden Verleihdetails abrufen.

Wir können mehrere INNER JOINS für die zugehörigen Tabellen verwenden, wie im folgenden Beispiel gezeigt:

WÄHLEN

Filmtitel,

inventory.inventory_id,

Rental.rental_date

AUS

Film

INNER JOIN-Inventar AN

film.film_id = inventory.film_id

INNER JOIN-Vermietung AN

inventory.inventory_id = Rental.inventory_id;

In der angegebenen Beispielabfrage beginnen wir mit der Verknüpfung der Film- und Inventartabellen basierend auf der Spalte „film_id“. Anschließend nehmen wir den resultierenden Satz und verknüpfen ihn basierend auf der Spalte „inventory_id“ mit der Miettabelle.

Dadurch wird sichergestellt, dass wir drei Tabellen mit einem einfachen INNER JOIN verbinden. Die resultierende Menge ist wie folgt:

Beispiel 2: Verwendung von INNER JOIN und LEFT JOIN

Nehmen wir an, wir möchten nun die Liste der Filme, die Liste des Leihbestands (falls vorhanden) und die zugehörigen Leihdetails.

Wir möchten außerdem sicherstellen, dass wir einen Film auch dann in das Ergebnis einbeziehen, wenn er nicht über einen Leihbestand verfügt. Hier kommen INNER JOIN und LEFT JOIN ins Spiel.

Betrachten Sie das folgende Beispiel:

WÄHLEN

Filmtitel,

inventory.inventory_id,

Rental.rental_date

AUS

Film

INNER JOIN-Inventar AN

film.film_id = inventory.film_id

LEFT JOIN-Vermietung AN

inventory.inventory_id = Rental.inventory_id;

In diesem Beispiel verwenden wir einen INNER JOIN, um die Film- und Inventartabelle zu verknüpfen, um sicherzustellen, dass wir die Titel mit dem verfügbaren Inventar erhalten. Anschließend verwenden wir den LEFT JOIN, um der Miettabelle beizutreten, um die Mietdetails abzurufen, sofern verfügbar, und NULL für jeden Titel, der keine Miethistorie hat.

Die resultierende Menge ist wie folgt:

Abschluss

In diesem Tutorial haben wir etwas über die verschiedenen JOINS-Typen in SQL gelernt, wie sie funktionieren und wie wir sie zum Kombinieren von drei Tabellen verwenden können.