Definitionen:
- INNER JOIN: Ein INNER JOIN kombiniert Zeilen aus zwei Tabellen basierend auf einer gegebenen Bedingung und gibt nur jene Zeilen zurück, die diese Bedingung erfüllen. Das bedeutet, es werden nur die übereinstimmenden Zeilen aus beiden Tabellen angezeigt.
- OUTER JOIN: Ein OUTER JOIN gibt alle Zeilen aus einer Tabelle und die passenden Zeilen aus einer anderen Tabelle zurück. Wenn es keine Übereinstimmung gibt, werden NULL-Werte für jede Spalte der Tabelle zurückgegeben, die keine Übereinstimmungen hat. OUTER JOINs können als LEFT OUTER JOIN, RIGHT OUTER JOIN oder FULL OUTER JOIN kategorisiert werden.
Beispiel:
Angenommen, wir haben zwei Tabellen:
Tabelle A
:
ID | Name |
---|---|
1 | Anna |
2 | Brian |
3 | Charlie |
Tabelle B
:
ID | Beruf |
---|---|
1 | Lehrer |
3 | Ingenieur |
4 | Arzt |
- Ein INNER JOIN zwischen Tabelle A und Tabelle B anhand der Spalte “ID” würde zurückgeben:
ID | Name | Beruf |
---|---|---|
1 | Anna | Lehrer |
3 | Charlie | Ingenieur |
Die Zeilen für Brian (aus Tabelle A) und Arzt (aus Tabelle B) werden nicht angezeigt, da sie in der jeweils anderen Tabelle keine entsprechende ID haben.
- Ein LEFT OUTER JOIN zwischen Tabelle A und Tabelle B anhand der Spalte “ID” würde zurückgeben:
ID | Name | Beruf |
---|---|---|
1 | Anna | Lehrer |
2 | Brian | NULL |
3 | Charlie | Ingenieur |
Hier werden alle Zeilen aus Tabelle A und die passenden Zeilen aus Tabelle B angezeigt. Für Brian gibt es keine passende Zeile in Tabelle B, daher zeigt es NULL für den Beruf an.
Fazit:
Der Hauptunterschied zwischen INNER JOIN und OUTER JOIN liegt in der Art, wie nicht übereinstimmende Zeilen behandelt werden. Während INNER JOIN nur die Zeilen zurückgibt, die eine Übereinstimmung in beiden Tabellen haben, gibt OUTER JOIN auch Zeilen zurück, die keine Übereinstimmung in der jeweils anderen Tabelle haben.