Wahrscheinlich sind Sie bereits mit einfachen SQL-Abfragen vertraut, z. B. mit SELECT * FROM table
. Jetzt fragen Sie sich, was zu tun ist, wenn Sie mehrere Tabellen haben und diese verbinden wollen. Genau! JOIN
ist der Schlüssel dazu. In diesem SQL-JOINs Tutorial für Anfänger lernen Sie, wie Sie Daten aus mehreren Tabellen miteinander verbinden können.
Was sind SQL-JOINs?
Datenbanken haben normalerweise mehr als eine Tabelle. JOINs
ist eine SQL-Konstruktion, die verwendet wird, um Daten aus zwei oder mehr Tabellen zu verbinden. Wenn Sie Spalten aus zwei Tabellen in einer Ergebnistabelle verwenden möchten, ist es am einfachsten, eine JOIN
-Abfrage zu schreiben.
Die Syntax einer SQL JOIN
lautet:
SELECT * FROM table1JOIN table2 ON table1.id1=table2.id2
Da dies ein SQL JOINs
Tutorial für Anfänger ist, lassen Sie uns mit den Grundlagen beginnen. Wir werden die Elemente einzeln durchgehen.
Nach dem Schlüsselwort FROM
schreiben Sie den Namen der ersten Tabelle, aus der Sie Spalten entnehmen möchten. Dann verwenden Sie das Schlüsselwort JOIN
, gefolgt von dem Namen der zweiten Tabelle, die Sie verwenden möchten.
Als nächstes teilt die Anweisung ON
der Abfrage mit, auf welchen Spalten die Daten verbunden werden sollen. (Normalerweise ist dies ein ID
). In der obigen Syntax verbinden wir die Tabellen mit id1
aus table1
und id2
aus table2
. Dies wird als table1.id1
und table2.id2
geschrieben - nach dem Tabellennamen folgt ein Punkt und dann der Spaltenname.
Es sollte klargestellt werden, dass die Spalten, über die wir die Daten verknüpfen, nicht immer die Form von ID
haben müssen. Sie müssen auch nicht den gleichen Namen haben. Es ist zum Beispiel möglich, zwei Tabellen mit den Schlüsseln orders.post_code
und cities.zip_code
zu verknüpfen. Wie Sie sehen, handelt es sich nicht um eine ID
und auch die Spaltennamen für die Postleitzahlen sind unterschiedlich. Beide Spalten enthalten jedoch Postleitzahlen; zwei übereinstimmende Felder sind erforderlich, um eine SQL JOIN
zu erstellen.
INNER JOIN
Fahren wir fort mit unserer SQL-JOINs für Anfänger Anleitung. Wir werden sehen, wie SQL-JOINs in einem einfachen Beispiel funktionieren. Angenommen, wir wollen herausfinden, welcher Künstler einen bestimmten Song aufgenommen hat. In diesem grundlegenden Datenmodell gibt es nur zwei Tabellen: song
und artist
. Die Tabelle song
enthält die Spalten song_id
, song_title
und artist_id
. Die Tabelle artist
besteht aus den Spalten artist_id
und artist_name
. Wie wir sehen, ist artist_id
in beiden Tabellen enthalten; wir können es verwenden, um sie zu verbinden.
Der einfachste JOIN
(auch INNER JOIN
genannt) nimmt die linke Tabelle und gleicht Informationen für jede Zeile aus der rechten Tabelle mit artist_id
ab. So hat der erste Song, "Dancing Queen", eine artist_id
gleich "04"; in der Tabelle artist
wird "04" "ABBA" zugewiesen .
Wie Sie in der Tabelle artist
sehen können, gibt es keine artist_id
gleich "06", die dem Lied "Rolling in the Deep" zugeordnet ist . In der Ergebnistabelle werden nur Lieder angezeigt, die mit einem artist_name
übereinstimmen. In der Ergebnistabelle gibt es auch keine Michael-Jackson-Songs, da es in der Tabelle song
keinen solchen Song gibt.
Denken Sie daran, dass INNER JOIN
alle Zeilen aus beiden Tabellen auswählt, solange es eine Übereinstimmung zwischen den Spalten in beiden Tabellen gibt.
Hier ist der Code:
SELECT *FROM songJOIN artist ON song.artist_id=artist.artist_id
LEFT JOIN
Die zweite Art der Verknüpfung, die wir in diesem SQL-JOINs Tutorial für Anfänger erwähnen werden, ist die LEFT JOIN
. Sie nimmt immer die erste Tabelle (d.h. die Tabelle direkt nach dem FROM
Schlüsselwort) als Ganzes (alle Datensätze in der ersten Tabelle). Es werden nur übereinstimmende Datensätze aus der zweiten Tabelle genommen. Wenn es keine übereinstimmenden Informationen gibt, wird ein NULL
Wert zurückgegeben. Dies bedeutet, dass keine Informationen für diese bestimmte ID
verfügbar sind.
Schauen Sie sich noch einmal die Tabelle artist
an. Es gibt kein artist_name
mit einem artist_id
gleich "06". Das ist der Grund, warum der Song "Rolling in the deep" nicht im INNER JOIN
Abfrageergebnis vorkommt. Er ist zwar im LEFT JOIN
Beispiel unten aufgeführt, hat aber NULL
Werte für artist_id
und artist_name
.
Hier ist die SQL LEFT JOIN
Anweisung:
SELECT *FROM songLEFT JOIN artist ON song.artist_id=artist.artist_id
RIGHT JOIN
Die nächste Art der Verknüpfung in unserem SQL-JOINs Tutorial für Anfänger ist die RIGHT JOIN
. Im Gegensatz zu LEFT JOIN
nimmt sie alle Datensätze aus der zweiten Tabelle (die unmittelbar nach dem JOIN
Schlüsselwort) und nur die Datensätze aus der ersten Tabelle, die übereinstimmende artist_id
s haben. In diesem Fall gibt es keine Michael-Jackson-Songs in der Datenbank, also gibt es NULL
s für die song_id
s, song_title
s und artist_id
s. Und jetzt ist "Rolling in the Deep" verschwunden, da es in der rechten Tabelle (artist
) keine artist_id
gleich "06" gibt.
Hier ist der Code:
SELECT *FROM songRIGHT JOIN artist ON song.artist_id=artist.artist_id
FULL JOIN
Die letzte Art von JOIN
, die wir in unserem SQL-JOINs für Anfänger-Leitfaden besprechen werden, ist FULL JOIN
. Sie ist eine Kombination aus LEFT JOIN
und RIGHT JOIN
, da sie alle Datensätze aus beiden Tabellen nimmt und NULL
-Werte dort einfügt, wo die Informationen aus der passenden Tabelle fehlen. Im folgenden Beispiel sehen Sie NULL
s für artist_id
gleich "06" (ja, es sollte Adele sein!) und NULL
s für Michael Jackson Songs mit artist_id
gleich "05".(Ja, "Billie Jean" existiert, aber SQL kennt es nicht!)
SELECT *FROM songFULL JOIN artist ON song.artist_id=artist.artist_id
Beispiel aus dem wirklichen Leben: Läden und Produkte
Jetzt werden wir Ihnen zeigen, wie Sie SQL-JOINs in einem echten Geschäftsbeispiel. Dieses Mal wird unser SQL-JOINs Tutorial für Anfänger ein Beispiel aus dem Einzelhandel verwenden. Stellen Sie sich vor, Sie betreiben ein Geschäft und möchten sehen, welche Produkte nicht mehr vorrätig sind. Außerdem möchten Sie überprüfen, ob Ihr Datenbankmanager für Ordnung sorgt. Nehmen wir an, die Datenbank hat nur zwei Tabellen: product
und stock
.
Wie Sie sehen können, hat die erste Tabelle (product
) zwei Spalten: product_id
und product_name
. Wenn alles in Ordnung ist, sollte es eine ID und einen Namen für alle Produkte geben, die wir jemals verkauft haben. Die zweite Tabelle (stock
) stellt den aktuellen Bestand im Laden dar - z. B. gibt es sieben Artikel für den product_id
Wert "100".
Sehen Sie sich bitte die Spalte product_id
in beiden Tabellen genauer an. Einige Bezeichner sind in beiden Tabellen vorhanden(102, 105, 107); einige sind nur in der linken Tabelle(101, 103, 106); und einige sind nur in der rechten Tabelle(100, 104). Diese Informationen werden in den folgenden Beispielen verwendet.
Fehlende Informationen unberücksichtigt lassen
Wenn wir nur die Produkte sehen wollen, die derzeit auf Lager sind, und wir bereits alle ihre Namen kennen, können wir eine INNER JOIN
Anweisung verwenden. Sie wählt nur die Datensätze mit einer ID aus, die in beiden Tabellen vorhanden sind, die wir verknüpfen wollen. Als Ergebnis erhalten wir eine Liste mit drei Produktnamen und deren Mengen. Wie Sie sehen, können Sie sowohl die Anweisung JOIN
als auch INNER JOIN
verwenden, um dasselbe zu erreichen. JOIN
ist eine Abkürzung für INNER JOIN
. Die anderen JOIN
s müssen explizit angegeben werden.
EIN INNER JOIN
SELECT product_name, stock.product_id, quantityFROM productsINNER JOIN stock ON product.product_id = stock.product_id
Welche Produkte sollen geordnet werden?
Angenommen, wir wollen prüfen, welche Produkte nicht mehr vorrätig sind und nachbestellt werden müssen. Dazu wird eine LEFT JOIN
verwendet, um Datensätze aus der Tabelle product
mit der Tabelle stock
abzugleichen. Wir können uns das so vorstellen, dass wir die Tabelle product
auf der linken Seite und die Tabelle stock
auf der rechten Seite platzieren. Dann suchen wir nach Datensätzen in beiden Tabellen, die mit product_id.
übereinstimmen. Datensätze ohne übereinstimmende product_id
-Felder erhalten ein NULL
. (Siehe die Ergebnistabelle unten.)
EINE LINKSVERBINDUNG
SELECT product_name, stock.product_id, quantityFROM productsLEFT JOIN stock ON product.product_id = stock.product_id
In der Tabelle stock
gibt es also keine product_id
Werte, die "101", "103" oder "106" entsprechen. Aus diesem Grund zeigt die Tabelle NULL
s für Orangensaft, Kaffee und Müsli an. Dies sind die Produkte, die wir bestellen müssen.
Wissen wir, was wir verkaufen?
Die Aufgabe des Datenbankmanagers ist es, alles in unseren Datenbanken in Ordnung zu halten. Nehmen wir an, wir wollen überprüfen, ob er oder sie gute Arbeit leistet. Wir werden überprüfen, ob die Tabelle product
mit neuen Produkten aktualisiert wird. Dazu verwenden wir eine RIGHT JOIN
.
RIGHT JOIN
nimmt alle Datensätze aus der Tabelle stock
und stellt sie nach rechts (so wie es RIGHT JOIN
vorschlagen würde). Dann werden nur die Datensätze der Tabelle product
angezeigt, die einen passenden product_id
haben.
EIN RIGHT JOIN
SELECT product_name, stock.product_id, quantityFROM productsRIGHT JOIN stock ON product.product_id = stock.product_id
Alles Verfügbare anzeigen
Um sich ein vollständiges Bild von der Situation zu machen, möchten wir vielleicht alle Produktnamen und alle Mengen in beiden Tabellen sehen. Dann können wir sehen, welche Produkte nachbestellt werden müssen und bei welchen product_id
ein product_name
fehlt. Hierfür ist FULL JOIN
sehr nützlich! Es nimmt alle Datensätze aus der linken Tabelle (product
) und alle Datensätze aus der rechten Tabelle (stock
) und gleicht nur die Datensätze ab, die die gleiche ID haben (product_id
); es fügt ein NULL
auf der rechten Seite ein, wenn ein product_name
fehlt, oder auf der linken Seite, wenn es keine Artikel auf Lager gibt.
FULL JOIN
SELECT product_name, stock.product_id, quantityFROM productsFULL JOIN stock ON product.product_id = stock.product_id
Möchten Sie mehr über SQL-JOINs erfahren?
Weitere Beispiele für die Verwendung von SQL-JOINs finden Sie auf unserem YouTube-Kanal - We Learn SQL. Schauen Sie es sich an und vergessen Sie nicht, ihn zu abonnieren.
Ich hoffe, diese kurze SQL-JOINs Anleitung für Anfänger hat Ihnen hoffentlich geholfen zu verstehen, wie man Daten aus zwei Tabellen verbindet. Wenn Sie mehr wissen möchten, empfehle ich Ihnen, sich bei der LearnSQL.de anzumelden, wo Sie lernen können, wie man SQL (und mehr!) im Umgang mit Datenbanken einsetzt. Die Themen werden auf einfache und sehr verständliche Weise präsentiert. Probieren Sie die SQL-Kurse der LearnSQL.de noch heute kostenlos aus!