Join

Mit JOIN’s können zwei oder mehrere Tabellen zusammengefügt werden, solange es eine Verbindung (Relation à ForeignKey’s) zwischen den Tabellen gibt. Durch die verschiedenen Arten der JOIN’s, werden zu den eigentlichen Kriterien zusätzliche Regeln definiert.

Für die Beispiele verwenden wir folgende Tabellen.

user
idnamecourse
1Alice1
2Bob1
3Caroline2
4David5
5Emma(NULL)
course
idname
1HTML5
2CSS3
3JavaScript
4PHP
5MySQL

 

INNER JOIN (JOIN)

Der INNER JOIN (oder auch nur JOIN) liefert die Schnittmenge beider Tabellen.

 

      SELECT u.name, c.name

                  FROM user AS u

                  INNER JOIN course AS c ON u.course = c.id

 

Resultat
u.namec.name
AliceHTML5
BobHTML5
CarlineCSS3
DavidMySQL
InnerJoin

 

LEFT JOIN

Bei einem LEFT JOIN werden alle Datensätze der „Haupttabelle“ user mit denen der Tabelle course „links herum“ (LEFT JOIN) verknüpft.

Das bedeutet, dass alle Datensätze der „linken“ Tabelle auf jeden Fall angezeigt werden. Gibt es in der „rechten“ Tabelle keine entsprechende Relation, so wird der fehlende Teil der Spalte course einfach mit einer NULL aufgefüllt.

 

      SELECT u.name, c.name

                  FROM user AS u

                  LEFT JOIN course AS c ON u.course = c.id

Resultat
u.namec.name
AliceHTML5
BobHTML5
CarlineCSS3
DavidMySQL
Emma(NULL)
LeftJoin

 

RIGHT JOIN

Hier läuft es eigentlich nur anders herum. Hier wird die „Haupttabelle“ user „rechts herum“ mit der Tabelle course verbunden. Hier werden also alle Datensätze der rechten Tabelle angezeigt und fehlende der linken mit NULL ausgefüllt.

 

      SELECT u.name, c.name

                  FROM user

                  RIGHT JOIN course AS c ON u.course = c.id

 

Resultat
u.namec.name
AliceHTML5
BobHTML5
CarlineCSS3
(NULL)JavaScript
(NULL)PHP
DavidMySQL
RightJoin

OUTER JOIN (FULL OUTER JOIN)

Bei einem Full Outer Join handelt es sich um eine Kombination aus einem LEFT JOIN und einem RIGHT JOIN. Das Ziel dabei ist, Datensätze zu verknüpfen. Wenn es aber keine Beziehung gibt, so sollen die entsprechenden Felder beider Tabellen mit einem NULL gefüllt werden.

MySQL bietet keine direkte Unterstützugn für den OUTER JOIN, aber man kann ohne grosse Aufwände SQL-Queries erstellen, welche solche OUTER JOIN’s imitieren.

 

      SELECT u.name, c.name

                  FROM user AS u

                  LEFT JOIN course AS c ON u.course = c.id

                  UNION

                  SELECT u.name, c.name

                  FROM user AS u

                  RIGHT JOIN course AS c ON u.course = c.id

Resultat
u.namec.name
AliceHTML5
BobHTML5
CarlineCSS3
DavidMySQL
Emma(NULL)
(NULL)JavaScript
(NULL)PHP
OuterJoin
Join
Markiert in:                     

Schreibe einen Kommentar