Innerer Verbund INNER JOIN
Im vorherigen Kapitel haben wir die allgemeine Struktur einer Multi-Table-Query angeschaut:
SELECT tabellen_felder
FROM tabelle_1
[INNER | {LEFT | RIGHT | FULL} [OUTER]] JOIN tabelle_2
ON verbund_bedingung
[...]- [ ]optionaler Teil
- { a | b }eine der Optionen
- ...kann wiederholt werden
- tabellen_felder
Die Spalten aus beliebigen verbundenen Tabellen, die ins Ergebnis kommen.
- tabelle_1
- Die erste Tabelle, mit der die übrigen verbunden werden.
- INNER
Innerer Verbund: Ins Ergebnis kommen nur Zeilen, für die ein Gegenstück gefunden wurde. Das ist der Standard, deshalb kannst du INNER weglassen.
SchlüsselwortOptional- LEFT | RIGHT | FULL
Äußerer Verbund: links, rechts oder vollständig. Neben den Paaren kommen auch die Zeilen ohne Gegenstück aus der linken, der rechten oder beiden Tabellen ins Ergebnis.
SchlüsselwortOptional- OUTER
Betont nur, dass der Verbund ein äußerer ist. Steht nach LEFT, RIGHT oder FULL und ändert am Ergebnis nichts.
SchlüsselwortOptional- tabelle_2
Die Tabelle, die angefügt wird. Um weitere Tabellen anzufügen, ergänze für jede ein eigenes JOIN ... ON ....
- verbund_bedingung
Die Regel, nach der Zeilen der beiden Tabellen einander finden, zum Beispiel Payments.family_member = FamilyMembers.member_id.
Bei einer Multi-Table-Query mit innerem Verbund sieht die allgemeine Struktur so aus:
SELECT tabellen_felder
FROM tabelle_1
[INNER] JOIN tabelle_2
ON verbund_bedingung
[...]- [ ]optionaler Teil
- ...kann wiederholt werden
- tabellen_felder
Die Spalten aus beliebigen verbundenen Tabellen, die ins Ergebnis kommen.
- tabelle_1
- Die erste Tabelle, mit der die übrigen verbunden werden.
- INNER
Innerer Verbund: Ins Ergebnis kommen nur Zeilen, für die ein Gegenstück gefunden wurde. Das ist der Standard, deshalb kannst du INNER weglassen.
SchlüsselwortOptional- tabelle_2
Die Tabelle, die angefügt wird. Um weitere Tabellen anzufügen, ergänze für jede ein eigenes JOIN ... ON ....
- verbund_bedingung
Die Regel, nach der Zeilen der beiden Tabellen einander finden, zum Beispiel Payments.family_member = FamilyMembers.member_id.
Eine Query kann zum Beispiel folgendermassen aussehen:
MySQL 8.4SELECT family_member, member_name FROM Payments INNER JOIN FamilyMembers ON Payments.family_member = FamilyMembers.member_id
Was ein innerer Verbund ist
Ein innerer Verbund verknüpft Paare von Datensätzen aus zwei Tabellen, die die Verbundbedingung erfüllen, und bildet daraus eine neue Tabelle mit den Spalten aus der ersten und der zweiten Ausgangstabelle.
Visuell sieht das so aus:

Da unsere Bedingung die Gleichheit der Felder Payments.good_id und Goods.good_id verlangt, landen im Ergebnis nur die Datensätze, bei denen in beiden Tabellen derselbe Wert für good_id vorkommt.
WHERE zum Verbinden von Tabellen nutzen
Tabellen lassen sich auch über WHERE innerlich verbinden. Die obige Query, geschrieben mit INNER JOIN, sieht damit so aus:
MySQL 8.4SELECT family_member, member_name FROM Payments, FamilyMembers WHERE Payments.family_member = FamilyMembers.member_id