Verschiedene Informationen können in verschiedenen Tabellen liegen, und um sie zusammenzubringen, benutzen wir INNER JOIN ... ON. Tabellen zu verknüpfen ist der Kern von SQL, kann aber sehr kompliziert werden. Wir starten mit einem einfachen Beispiel - und zwar mit einem INNER JOIN.
Wie du unten siehst, gibt es 3 Tabellen:
character: Jede Figur ist eine Zeile und wird durch eine eindeutige Kennung (id) dargestellt, z. B. steht 1 für Doogie Howser
character_tv_show: In welcher Serie kommt die jeweilige Figur vor?
character_actor: Wer spielt die jeweilige Figur?
Beachte, dass in character_tv_show nicht beide Namen gespeichert werden (also etwa Willow Rosenberg und Buffy the Vampire Slayer), sondern die character_id statt des Figurennamens. Diese character_id verweist auf die passende id-Zeile in der Tabelle character.
Das macht man, damit Daten nicht doppelt vorkommen. Ändert sich zum Beispiel der Name einer Figur, musst du ihn nur in einer einzigen Zeile ändern.
Dadurch können wir die Tabellen „on“ dieser gemeinsamen Referenzspalte zusammenführen („joinen“).
Um jeden Figurennamen zusammen mit dem Namen der Serie zu bekommen, schreiben wir
SELECT character.name, character_tv_show.tv_show_name
FROM character
INNER JOIN character_tv_show
ON character.id = character_tv_show.character_id;
Das stellt jede Zeile aus character neben die passende Zeile aus character_tv_show und umgekehrt.
Hinweise:
- Wir benutzen die Schreibweise tabellenname.spaltenname. Bei bloßem spaltenname könnte SQL die falsche Tabelle annehmen.
- Die Beispielabfrage oben steht der Lesbarkeit halber auf mehreren Zeilen, das ändert aber nichts an der Abfrage.
Kannst du mit einem Inner Join jeden Figurennamen mit dem Schauspieler verbinden, der die Figur spielt? Wähle die Spalten: character.name, character_actor.actor_name