Zurück zur Artikelliste Artikel
8 Leseminuten

SQL JOINs für Einsteiger

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 table1
JOIN 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.

tab-1

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 song
JOIN artist
  ON song.artist_id=artist.artist_id
tab-2

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 song
LEFT JOIN artist
  ON song.artist_id=artist.artist_id
tab-3

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_ids haben. In diesem Fall gibt es keine Michael-Jackson-Songs in der Datenbank, also gibt es NULLs für die song_ids, song_titles und artist_ids. 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 song
RIGHT JOIN artist
  ON song.artist_id=artist.artist_id
tab-4

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 NULLs für artist_id gleich "06" (ja, es sollte Adele sein!) und NULLs für Michael Jackson Songs mit artist_id gleich "05".(Ja, "Billie Jean" existiert, aber SQL kennt es nicht!)

SELECT *
FROM song
FULL JOIN artist
  ON song.artist_id=artist.artist_id
tab-5

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.

tab-6

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 JOINs müssen explizit angegeben werden.

EIN INNER JOIN

SELECT
  product_name,
  stock.product_id,
  quantity
FROM products
INNER JOIN stock
  ON product.product_id = stock.product_id
tab-7

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,
  quantity
FROM products
LEFT JOIN stock
  ON product.product_id = stock.product_id
tab-8

In der Tabelle stock gibt es also keine product_id Werte, die "101", "103" oder "106" entsprechen. Aus diesem Grund zeigt die Tabelle NULLs 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,
  quantity
FROM products
RIGHT JOIN stock
  ON product.product_id = stock.product_id
tab-9

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_idein 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,
  quantity
FROM products
FULL JOIN stock
  ON product.product_id = stock.product_id
tab-10

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 Vertabelo Academy 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 Vertabelo Academy noch heute kostenlos aus!