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ählenAUS 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ählenAUS 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ählenAUS 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ählenAUS 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ÄHLENFilmtitel,
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ÄHLENFilmtitel,
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.