Zurück zur Artikelliste Artikel
9 Leseminuten

SQL JOINs erklärt: 5 anschauliche SQL INNER JOIN-Beispiele für Einsteiger

Suchen Sie nach einer klaren Erklärung von Joins in SQL? Sehen Sie sich diese fünf SQL INNER JOIN-Beispiele an!

In SQL kann INNER JOINfür Anfänger ein wenig schwierig zu beherrschen sein. Aber wenn Sie erst einmal mit ihnen arbeiten, werden Sie feststellen, dass sie sehr nützlich sind! Im Folgenden werden wir fünf Beispiele für SQL INNER JOINbesprechen. Doch zunächst ein kurzer Überblick darüber, warum JOINs wichtig sind.

In relationalen Datenbanken werden die Daten in Tabellen organisiert und gespeichert. Jede Tabelle repräsentiert eine bestimmte Art von Informationen. Oftmals müssen Sie jedoch Daten aus verschiedenen Tabellen gleichzeitig analysieren. Und genau hier kommen JOINs ins Spiel.

Wir ermutigen Sie, das Verbinden von Tabellen in unserem interaktiven SQL-JOINs Kurs folgen. Er umfasst 93 Übungen zu den folgenden Themen:

  • SQL JOIN-Typen.
  • Mehrfache JOINs.
  • Self-Joins, d.h. das Verbinden einer Tabelle mit sich selbst.
  • Nicht-Equi JOINs.

Sind Sie also bereit, sich einige Beispiele für INNER JOIN anzusehen? Fangen wir an!

Tabellen zusammenführen: Einführung in die SQL JOIN-Operationen

SQL-JOINs kombinieren Daten aus zwei oder mehr Tabellen auf der Grundlage übereinstimmender Spaltenwerte. So können Sie beispielsweise Kundeninformationen mit den von ihnen getätigten Bestellungen zusammenführen oder jedes Produkt mit seinen Lieferanten verknüpfen.

SQL-JOINs Mit SQL JOIN können Sie Daten aus verschiedenen Tabellen zusammenführen und aussagekräftige Informationen für Ihren speziellen Anwendungsfall extrahieren. In diesem SQL JOIN Cheat Sheet finden Sie einen Überblick über die verschiedenen Arten von JOINs.

Ein INNER JOIN in SQL kombiniert Zeilen aus mehreren Tabellen, indem er ihre gemeinsamen Spaltenwerte abgleicht. Wenn Sie eine INNER JOIN anwenden, um Kundendaten mit den entsprechenden Bestellungen zu verknüpfen, erhalten Sie eine Liste der Kunden, die mindestens eine Bestellung aufgegeben haben.

SQL INNER JOIN Beispiele für Einsteiger

Zusätzlich zu INNER JOIN bietet SQL auch andere Arten von Verknüpfungen: LEFT JOIN, RIGHT JOIN, und FULL JOIN. Diese Verknüpfungen werden OUTER JOINgenannt. Im Gegensatz zu INNER JOIN kann eine OUTER JOIN Operation Zeilen aus beiden Tabellen auflisten, auch wenn es keine Übereinstimmung gibt.

SQL INNER JOIN Beispiele für Einsteiger

Schauen wir uns ein Beispiel an, um die Natur von SQL INNER JOINs besser zu verstehen.

Hier ist die customers Tabelle, die Kundeninformationen speichert:

customer_idfirst_namelast_nameemail
1CoryCastillocc@email.com
2ElliePottsep@email.com
3JackGreerjg@email.com

Und hier ist die orders Tabelle, die alle Bestellungen der Kunden speichert:

order_idcustomer_idorder_dateorder_amount
2716/6/2023100.00
2827/7/2023150.00
2918/8/202320.00

Die gemeinsame Spalte (in rosa dargestellt), auf der die customers und orders Tabellen verbunden sind, ist die Spalte customer_id.

Und hier ist die Abfrage:

SELECT 
  c.customer_id, 
  c.email, 
  o.order_date, 
  o.order_amount
FROM customers AS c
INNER JOIN orders AS o
ON c.customer_id = o.customer_id;

Diese Abfrage verknüpft die customers Tabelle (alias AS c) und die orders Tabelle (mit dem Alias AS o). Diese Tabellen-Aliase bieten eine eindeutige Möglichkeit, die Datenbank über die Quelltabelle jeder Spalte zu informieren (unter Verwendung der Syntax table_alias.column_name).

Diese Aliase werden in der Klausel ON verwendet, um die Spalte für die Verbindung von Tabellen festzulegen. Sie werden auch in der Anweisung SELECT verwendet, in der zwei Spalten aus der Tabelle customers (c.customer_id and c.email) und zwei weitere Spalten aus der Tabelle orders Tabelle (o.order_date and o.order_amount).

Hier ist die Ausgabe der Abfrage:

customer_idemailorder_dateorder_amount
1cc@email.com6/6/2023100.00
2ep@email.com7/7/2023150.00
1cc@email.com8/8/202320.00

Sie werden feststellen, dass der Kunde mit der ID 3 nicht in der Ergebnistabelle erscheint. Dieser Kunde hat noch keine Bestellungen aufgegeben; daher gibt es keine passenden Datensätze in der orders Tabelle.

Das Schlüsselwort INNER JOIN ist austauschbar mit dem Schlüsselwort JOIN. Mit anderen Worten, wenn Sie JOIN verwenden, interpretiert die Datenbank es als Kurzschreibweise für INNER JOIN.

Wenn Sie mehr über INNER JOINerfahren möchten, lesen Sie unseren Artikel Was ist ein Inner Join in SQL?

SQL INNER JOIN Beispiele in der Praxis

Sehen wir uns nun einige SQL INNER JOIN Beispiele an, die für Anfänger geeignet sind. Bevor Sie sich mit den Beispielen befassen, sollten Sie sich diesen Artikel ansehen, in dem beschrieben wird, wie Sie SQL-JOINs üben können.

Beispiel 1: Bücher mit Autoren verknüpfen

Sie haben zwei Tabellen, in denen Informationen über Bücher und Autoren gespeichert sind. Verknüpfen Sie diese Tabellen, um die Liste der Bücher zusammen mit ihren Autoren anzuzeigen.

Hier ist die books Tabelle:

book_idtitlepublication_yearauthor_id
1Frankenstein181822
2The Time Machine189523
3The Martian201124
42001: A Space Odyssey196825
5Dune196526

Die Spalte book_id identifiziert jedes Buch auf eindeutige Weise. Und die Spalte author_id ordnet jedem Buch einen Autor zu.

Und hier ist die authors Tabelle:

author_idauthor_name
22Mary Shelley
23H. G. Wells
24Andy Weir
25Arthur C. Clarke
26Frank Herbert

In der Spalte author_id wird jeder Autor eindeutig identifiziert. Und die Spalte author_name speichert die vollständigen Namen der Autoren.

Wenn Sie die Buchtitel und die Autorennamen sehen möchten, können Sie diese Tabellen anhand ihrer gemeinsamen Spalte (der Spalte author_id in beiden Tabellen) verbinden. Wählen Sie einfach title aus books und author_name aus authors:

SELECT 
  b.title, 
  a.author_name
FROM books AS b
INNER JOIN authors AS a
ON b.author_id = a.author_id;

Dies ist die resultierende Tabelle:

titleauthor_name
FrankensteinMary Shelley
The Time MachineH. G. Wells
The MartianAndy Weir
2001: A Space OdysseyArthur C. Clarke
DuneFrank Herbert

Bitte beachten Sie, dass jedem Buch ein Autor und jedem Autor ein Buch zugeordnet ist, da es keine doppelten Werte in der gemeinsamen Spalte author_id gibt. Sehen Sie sich das nächste Beispiel an, um zu sehen, was passiert, wenn die gemeinsame Spalte doppelte Werte enthält.

Beispiel 2: Produkte zu Kategorien zuordnen

Sie haben zwei Tabellen, die Produkte und Produktkategorien speichern. Verbinden Sie diese Tabellen, um die Liste der Produkte zusammen mit ihren Kategorien zu sehen.

Hier ist die products Tabelle:

product_idproduct_namecategory_id
1Apple22
2Orange22
3Potato23
4Carrot23
5Chocolate24

Die Spalte product_id identifiziert jedes Produkt eindeutig. Und die Spalte category_id ordnet jedem Produkt eine Kategorie zu.

Und hier ist die categories Tabelle:

category_idcategory_name
22Fruits
23Vegetables
24Snacks

Die Spalte category_id identifiziert jede Kategorie eindeutig. Und die Spalte category_name speichert die vollständigen Kategorienamen.

Wenn Sie die Produkte und ihre Kategorien sehen möchten, können Sie diese Tabellen auf der Grundlage ihrer gemeinsamen Spalte, der Spalte category_id, verbinden. Hier ist die Abfrage:

SELECT 
  p.product_name, 
  c.category_name
FROM products AS p
INNER JOIN categories AS c
ON p.category_id = c.category_id;

Dies ist die resultierende Tabelle:

product_namecategory_name
AppleFruits
OrangeFruits
PotatoVegetables
CarrotVegetables
ChocolateSnacks

Die Kategorien mit den IDs 22 und 23 sind jeweils zwei Produkten zugeordnet; ihre Namen erscheinen zweimal in der Ausgabetabelle.

Beispiel 3: Auflisten von Ärzten und Patienten mit gleichem Vornamen

Sie haben zwei Tabellen, die Informationen über Ärzte und Patienten speichern. Verbinden Sie diese Tabellen, um die Liste der Ärzte und Patienten mit demselben Vornamen anzuzeigen.

Hier ist die doctors Tabelle:

doctor_idfirst_namelast_name
1SamanthaMonroe
2MelvinFerrell
3AlbieBlake
4RoseBernard
5LouiPeterson

Die Spalte doctor_id identifiziert jeden Arzt eindeutig. In den beiden anderen Spalten werden die Vor- und Nachnamen der Ärzte gespeichert.

Und hier ist die patients Tabelle:

patient_idfirst_namelast_name
23BenWoodward
24SamanthaThomson
25KateDonovan
26AlbieVasquez
27LouiChen

In der Spalte patient_id wird jeder Patient eindeutig identifiziert. In den beiden anderen Spalten werden die Vor- und Nachnamen der Patienten gespeichert.

Wenn Sie die Liste der Ärzte und Patienten mit demselben Vornamen sehen möchten, können Sie diese Tabellen anhand der Spalte first_name verbinden.

SELECT d.*, p.*
FROM doctors AS d
INNER JOIN patients AS p
ON d.first_name = p.first_name;

Bitte beachten Sie, dass d.* alle Spalten der Tabelle doctors Tabelle und p.* alle Spalten aus der patients Tabelle definiert.

Dies ist die resultierende Tabelle:

doctor_idfirst_namelast_namepatient_idfirst_namelast_name
1SamanthaMonroe24SamanthaThomson
3AlbieBlake26AlbieVasquez
5LouiPeterson27LouiChen

Dank der Operation INNER JOIN können Sie nur die Arzt- und Patientenpaare auflisten, bei denen die Vornamen übereinstimmen.

Beispiel 4: Zuordnung von Personen zu geeigneten Wohnungen

Sie haben zwei Tabellen, in denen Informationen über zu vermietende Wohnungen und Personen, die nach Wohnungen in ihrer Preisklasse suchen, gespeichert sind. Verbinden Sie diese Tabellen, um zu sehen, welche Wohnungen von welcher Person gemietet werden können.

Hier ist die apartments Tabelle:

apartment_idrent
11000
2700
3500

Die Spalte apartment_id identifiziert jede Wohnung eindeutig. Und die Spalte rent speichert den monatlichen Mietbetrag.

Und hier ist die persons Tabelle:

person_idemailmax_rent
23ab@email.com900
24cd@email.com600
25ef@email.com3000

Die Spalte person_id identifiziert eindeutig jede Person, die eine Wohnung zur Miete sucht. Die Spalte email speichert ihre E-Mails, und die Spalte max_rent speichert den Höchstbetrag der Monatsmiete, den sie für die Wohnung zahlen können.

Wenn Sie sehen möchten, welche Wohnungen von welcher Person gemietet werden können, können Sie diese Tabellen anhand der Spalten rent und max_rent verknüpfen:

SELECT 
  p.person_id, 
  p.email,
  a.apartment_id, 
  a.rent AS apartment_rent
FROM apartments AS a
INNER JOIN persons AS p
ON a.rent < p.max_rent;

Hier muss die Übereinstimmung zwischen der Spalte Miete der Tabelle apartments Tabelle und der Spalte max_rent der Tabelle persons Tabelle, wobei rent < max_rent.

Dies ist die resultierende Tabelle:

person_idemailapartment_idapartment_rent
25ef@email.com11000
23ab@email.com2700
25ef@email.com2700
23ab@email.com3500
24cd@email.com3500
25ef@email.com3500

Durch die Verwendung der ON-Klausel mit der Bedingung, die das Zeichen < enthält, wurden mehrere Zeilen aus der Tabelle apartments Tabelle mehreren Zeilen aus der Tabelle persons Tabelle zugeordnet, und umgekehrt. Und Sie können sehen, welche Wohnungen für welche Personen zur Miete geeignet sind.

Beispiel 5: Verbinden von Kontinenten, Ländern und Städtetabellen

Diesmal haben Sie drei Tabellen, in denen Informationen über Kontinente, Länder und Städte gespeichert sind. Verbinden Sie diese Tabellen, um zu erfahren, welche Stadt zu welchem Land und welches Land zu welchem Kontinent gehört.

Hier ist die continents Tabelle, in der alle Kontinente gespeichert sind:

continent_idcontinent_name
1Asia
2Africa
3North America
4South America
5Antarctica
6Europe
7Australia

Die Spalte continent_id identifiziert jeden Kontinent eindeutig. In der Spalte continent_name ist der vollständige Name des Kontinents gespeichert.

Hier ist die countries Tabelle, die ausgewählte Länder speichert:

country_idcountry_namecontinent_id
23United States3
24Brazil4
25South Africa2
26Japan1
27Poland6

In der Spalte country_id wird jedes Land eindeutig identifiziert. In der Spalte country_name wird der vollständige Name des Landes gespeichert. Und die Spalte continent_id speichert den Kontinent, auf dem sich das Land befindet.

Und hier ist die cities Tabelle, die ausgewählte Städte speichert:

city_idcity_namecountry_id
33Rio de Janeiro24
34New York23
35Tokyo26
36Warsaw27
37Cape Town25

In der Spalte city_id wird jede Stadt eindeutig identifiziert. In der Spalte city_name wird der vollständige Name der Stadt gespeichert. Und die Spalte country_id speichert das Land, in dem die Stadt liegt.

Wenn Sie sehen möchten, welche Städte, Länder und Kontinente zusammengehören, können Sie diese drei Tabellen anhand ihrer gemeinsamen Spalten verbinden:

SELECT 
  cont.continent_name, 
  coun.country_name, 
  ci.city_name
FROM continents AS cont
INNER JOIN countries AS coun
ON cont.continent_id = coun.continent_id
INNER JOIN cities AS ci
ON coun.country_id = ci.country_id;

Die Tabelle continent Tabelle wird mit der countries über ihre gemeinsame Spalte (continent_id) verbunden. Und die countries Tabelle wird mit der cities Tabelle über ihre gemeinsame Spalte verbunden (country_id).

Dies ist die resultierende Tabelle:

continent_namecountry_namecity_name
AsiaJapanTokyo
AfricaSouth AfricaCape Town
North AmericaUnited StatesNew York
South AmericaBrazilRio de Janeiro
EuropePolandWarsaw

Die drei Tabellen werden über ihre gemeinsamen Spalten verbunden, und die Anweisung SELECT listet die Namen von Kontinenten, Ländern und Städten auf der Grundlage der Verbindung zwischen den ID-Spalten auf.

In diesem Artikel über die Verknüpfung von drei oder mehr Tabellen in SQL finden Sie weitere Beispiele für Multi-Table-Joins.

Sie sind dran mit dem Üben von SQL INNER JOIN-Beispielen

In diesem Artikel haben wir uns mit den Feinheiten von INNER JOIN in SQL befasst, von den grundlegenden Konzepten bis hin zu fortgeschrittenen Szenarien. Wir haben verschiedene JOIN Bedingungen verwendet und sogar drei Tabellen miteinander verbunden. Wie wir gesehen haben, liegt die Stärke von INNER JOIN in seiner Fähigkeit, Datensätze nahtlos zu verbinden, wodurch wir wertvolle Erkenntnisse gewinnen können.

Brauchen Sie weitere SQL INNER JOIN Beispiele? Versuchen Sie sich an allen Arten von JOINs, indem Sie unseren bereits erwähnten Kurs auf SQL-JOINs besuchen. Sie erhalten alle praktischen Übungen, die Sie benötigen, um JOINs zu schreiben.

Viel Erfolg!