INNER JOIN

Der INNER JOIN ist der am häufigsten verwendete JOIN-Typ. Mit dem INNER JOIN können Sie Daten aus zwei oder mehr Tabellen abrufen, die auf einer gemeinsamen Spalte basieren. Der INNER JOIN gibt nur die Datensätze zurück, die in beiden Tabellen übereinstimmen.

Hier ist ein Beispiel, um den INNER JOIN zu veranschaulichen:

Angenommen, wir haben zwei Tabellen, Kunden und Bestellungen, mit folgenden Spalten und Datensätzen:

Kunden Tabelle

kunden_id

name

email

1

Alice

alice@example.com

2

Bob

bob@example.com

3

Charlie

charlie@example.com

4

David

david@example.com

5

Eve

eve@example.com

Bestellungen Tabelle

bestell_id

bestell_datum

kunden_id

1001

2022-02-05

1

1002

2022-01-31

3

1003

2022-02-07

1

1004

2022-02-01

2

1005

2022-02-06

5

Wir können eine Abfrage mit INNER JOIN schreiben, um die Spalten name und bestell_datum zu selektieren, indem wir die Tabellen Kunden und Bestellungen über der Spalte kunden_id verbinden:

MYSQL/SQLite
SELECT kunden.name, bestellung.bestell_datum
FROM kunden
INNER JOIN bestellung
ON kunden.kunden_id = bestellung.kunden_id;

Die SELECT-Abfrage wählt Daten aus zwei Tabellen aus, Kunden und Bestellung, und gibt die Spalten name aus der Tabelle Kunden und bestell_datum aus der Tabelle Bestellung zurück. Die ON-Bedingung wird verwendet, um die beiden Tabellen zu verbinden, indem die Spalte kunden_id in der Kunden-Tabelle mit der Spalte kunden_id in der Bestellung-Tabelle verglichen wird.

Der SQL-Code führt eine Abfrage durch, die Daten aus zwei Tabellen kombiniert: „kunden“ und „bestellung“. Schauen wir uns den Code Schritt für Schritt an:

  1. SELECT kunden.name, bestellung.bestell_datum:

  • Hier wird festgelegt, welche Daten aus der Datenbank abgefragt werden sollen.

  • In diesem Fall werden die Spalten „name“ aus der Tabelle „kunden“ und „bestell_datum“ aus der Tabelle „bestellung“ ausgewählt.

  • Das bedeutet: Der Name des Kunden und das Datum seiner Bestellung werden angezeigt.

  1. FROM kunden:

  • Diese Zeile gibt an, dass die Abfrage in der Tabelle „kunden“ beginnt.

  1. INNER JOIN bestellung:

  • Ein INNER JOIN verbindet zwei Tabellen auf Basis einer Bedingung. Hier wird die Tabelle „bestellung“ mit der Tabelle „kunden“ verknüpft.

  • Es werden nur die Datensätze ausgewählt, bei denen es in beiden Tabellen übereinstimmende Werte gibt.

  1. ON kunden.kunden_id = bestellung.kunden_id:

  • Hier wird die Bedingung für den INNER JOIN festgelegt: Die Abfrage vergleicht die Spalte „kunden_id“ aus der Tabelle „kunden“ mit der Spalte „kunden_id“ aus der Tabelle „bestellung“.

  • Die Verbindung erfolgt also über die kunden_id, die in beiden Tabellen vorkommt. Das bedeutet: Es werden nur die Kunden angezeigt, die eine passende Bestellung haben.

Mögliche Ergebnistabelle

name

bestell_datum

Alice

2022-02-05

Charlie

2022-01-31

Alice

2022-02-07

Bob

2022-02-01

Eve

2022-02-06

Hinweis

Damit die richtigen Spalten aus den Tabellen gewählt werden, muss der Tabellenname vor der Spalte mit einem Punkt angegeben werden. kunden.name / bestellung.bestell_datum

Genauer gesagt wird mit dem INNER JOIN-Befehl sichergestellt, dass nur Zeilen zurückgegeben werden, in denen es einen Datensatz in beiden Tabellen gibt, der die Bedingung erfüllt. Das bedeutet, dass nur die Kundendatensätze zurückgegeben werden, für die es eine Bestellung gibt.

Zusammenfassend wählt diese Abfrage die Namen der Kunden und das Bestelldatum für alle Kunden aus, die mindestens eine Bestellung aufgegeben haben.

ON-Bedingung

Die ON-Bedingung ist eine Bedingung, die in einer JOIN-Abfrage verwendet wird, um zu bestimmen, wie die Datensätze aus den beteiligten Tabellen verbunden werden sollen. Sie wird normalerweise nach dem JOIN-Operator verwendet und enthält die Bedingungen, die erfüllt sein müssen, damit Zeilen aus den Tabellen miteinander verknüpft werden können.

Die ON-Bedingung spezifiziert, welche Spalten in den beteiligten Tabellen übereinstimmen müssen, um eine Verbindung herzustellen. Es können mehrere Bedingungen in der ON-Klausel angegeben werden, durch die Verwendung von logischen Operatoren wie AND oder OR.

Es können jedoch auch andere Bedingungen angeben, wie z.B. eine Bedingung, die besagt, dass ein Wert in einer Spalte größer oder kleiner sein muss als ein Wert in einer anderen Spalte.

MYSQL/SQLite
SELECT kunden.name, bestellung.bestell_datum
FROM kunden
INNER JOIN bestellung
ON kunden.kunden_id > bestellung.kunden_id;

Dieser SQL-Code ist eine SELECT-Abfrage, die Daten aus den Tabellen Kunden und Bestellung auswählt. Die INNER JOIN-Anweisung verbindet die beiden Tabellen basierend auf einer Bedingung in der ON-Klausel.

In diesem Fall wird die Verbindung zwischen den beiden Tabellen hergestellt, indem die Bedingung kunden.kunden_id > bestellung.kunden_id in der ON-Klausel verwendet wird. Das bedeutet, dass nur die Datensätze zurückgegeben werden, bei denen die Kundendaten einen höheren Wert in der Spalte kunden_id aufweisen als die Bestelldaten in der Spalte kunden_id.

Zusammengefasst gibt die Abfrage eine Tabelle zurück, die die Namen der Kunden und die Bestelldaten für alle Datensätze enthält, bei denen die Kundendaten eine höhere kunden_id aufweisen als die Bestelldaten.

Hinweis

Es ist jedoch zu beachten, dass diese Art von Abfrage möglicherweise nicht das gewünschte Ergebnis liefert, da es in der Regel keine logische Verbindung zwischen den Kundendaten und den Bestelldaten gibt, die auf der kunden_id-Spalte basiert.