SQL: Tabellen verbinden mit JOIN

Die wohl wichtigste Funktion von SQL ist die Funktion JOIN, die es ermöglicht Daten aus 2 oder mehr Tabellen zu verknüpfen. Ein JOIN erstellt eine temporäre Tabelle mit Daten aus den verknüpften Tabellen. Je nachdem welche Teilmenge der Tabellen ausgegeben werden sollen, muss eine andere JOIN-Art genutzt werden. In diesen Beitrag wird zunächst der INNER JOIN dargestellt.

Um die Daten aus den verschiedenen Tabellen mit Hilfe von Joins verbinden zu können, muss eine Beziehung anhand von eindeutigen Schlüsseln zwischen den Tabellen bestehen. Die Verknüpfung der Tabellen wird mit Hilfe von Fremdschlüsseln definiert. Wenn wir z.B. wissen möchten in welchen Filmen ein bestimmter Schauspieler mitgespielt hat, verknüpfen wir die FILM und ACTOR Tabelle mit Hilfe der FILM_ACTOR Tabelle, die über die beiden Fremdschlüssel ACTOR_ID und FILM_ID eine Verknüpfung zu den Detailtabellen ACTOR und FILM mit Hilfe eines Joins herstellen kann:

Technisch muss also neben dem Namen des anzuwendenden JOINS noch eine ON-Bedingung angeben werden, die angibt über welche Schlüssel die Tabellen verbunden werden. Allgemeine SQL Syntax:

SELECT table.column_name FROM tableA JOIN tableB ON tableA.column_name Operator tableB.column_name;

INNER JOIN (JOIN)

Die Funktion Inner Join gibt die Teilmenge der Datensätze aus, die in beiden Tabellen existieren (dunkelblau):

Möchten wir zum Beispiel alle Filmtitel ausgeben, in denen der Schauspieler mit der ACTOR_ID 1 mitgespielt hat, so lautet die SQL Syntax:

SELECT film_actor.`*`, film.title FROM film_actor

JOIN film

ON film_actor.film_id = film.film_id

WHERE film_actor.actor_id = 1;

Für die Spalten, die mit den Selectbefehl ausgegeben werden, müssen beim Join immer Tabellenname und Spaltennamen angegeben werden. Wenn alle Spalten einer Tabelle ausgegeben werden sollen, muss ein Stern ‚*‘ angeben werden.

SQL-Befehl: USING

Die gleichen Datensätze werden mit dem Befehl USING ausgegeben:

SELECT film_actor.`*`, film.title FROM film_actor

JOIN film

USING (film_id)

WHERE film_actor.actor_id = 1;

USING kann genutzt werden, wenn die Spaltennamen identisch sind. Somit kann mit dem Befehl USING das SQL Statement verkürzt werden, da hier der Spaltenname im Gegensatz zum ON-Befehl nur einmal angegeben werden muss. Beachtet werden muss, dass der Spaltenname in Klammern gesetzt werden muss.

Mehrere JOINS kombinieren

Um nun den Namen des Schauspielers mit auszugeben, werden die Informationen aus der Tabelle ACTOR durch einen zusätzlichen JOIN ermittelt:

SELECT film_actor.`*`, film.title, actor.last_name, actor.first_name FROM film_actor

JOIN film USING (film_id)

JOIN actor USING (actor_id)

WHERE film_actor.actor_id = 1;

(Visited 30.105 times, 1 visits today)

2 Antworten auf „SQL: Tabellen verbinden mit JOIN“

  1. Mit Abstand die beste Erklärung über FK und deren Verwendung die ich bisher gefunden habe. Habe Stunden, Tage in den letzten Wochen YT Videos geschaut und es machte einfach nicht „Klick“. Kurz vor dem Verzweifeln fand ich diese Erklärung und ich bin ihnen tausendfach dankbar!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert