Left und Right Join Tutorial

Left Join

Beim LEFT JOIN werden alle Einträge der linken Tabelle beibehalten, während von der rechten Tabelle nur Einträge übernommen werden, auf die die angegebene Bedingung passt. Wenn Einträge aus der linken Tabelle übernommen werden, die nicht mit einem rechten Eintrag gematcht werden konnten, so werden die Spalten, die von der rechten Tabelle sind, mit NULL aufgefüllt.

SELECT *
FROM Article LEFT OUTER JOIN OrderArticle ON Id = ArticleId;

Bei diesem Beispiel werden von der linken Tabelle, also Article, alle Einträge übernommen, von der OrderArticle aber nur jene, bei denen die ArticleId mit der Id von Article übereinstimmt. Das heißt, bei den Artikeln, für die es noch keine Bestellung gegeben hat, werden die Spalten in der Endtabelle, die von OrderArticle übernommen wurden, mit NULL aufgefüllt. Folgender Ausschnitt der Endtabelle veranschaulicht das:

Ergebnis der Abfrage

Für die ersten drei IDs in dieser Tabelle gab es keine passende ArticleId in OrderArticle, weshalb die Einträge zwar übernommen wurde, aber OrderId, ArticleId und Quantity mit NULL aufgefüllt wurden. Bei den Einträgen, bei denen eine Übereinstimmung vorliegt, wird wie beim INNER JOIN vorgegangen - alle Übereinstimmungen werden in die Endtabelle übernommen.

Right Join

Beim RIGHT JOIN passiert genau das Gleiche, wie beim LEFT JOIN, nur umgekehrt. Das heißt, wenn man einen LEFT JOIN bei einer Abfrage macht, danach die beiden Tabellen in der Reihenfolge vertauscht, und nun einen RIGHT JOIN macht, kommt dasselbe Endergebnis heraus.

Wenn man also das Ergebnis der folgenden Abfrage mit dem der obigen Abfrage mit dem LEFT JOIN vergleicht, wird man festellen, dass bis auf die Reihenfolge, in der die Spalten angezeigt werden, dasselbe Ergebnis herausgekommen ist.

SELECT *
FROM OrderArticle RIGHT OUTER JOIN Article ON Id = ArticleId;