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 |
|
|---|---|---|
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:
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:
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.
FROM kunden:
Diese Zeile gibt an, dass die Abfrage in der Tabelle „kunden“ beginnt.
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.
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.
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.