Mit einer JOIN Abfrage lassen sich Daten von mehreren Tabellen mit einem Query abfragen.
Es gibt folgende bekannte Arten von JOINs
- LEFT JOIN
- RIGHT JOIN
- INNER JOIN
- FULL JOIN
In der Praxis kommt man gut mit LEFT JOIN oder INNER JOIN zurecht. Alle anderen JOINs benutze ich so gut wie gar nicht.
MySQL LEFT JOIN
SELECT t1.col1, t1.col2, t2.col1, t2.col2 FROM table t1 LEFT JOIN table2 t2 ON t2.id = t1.id WHERE t1.id = 1;
- Daten die in t2 nicht vorkommen werden als "null" angezeigt.
- Kommt mehr als ein Datensatz in t2 vor, wird die komplette Zeile so oft ausgegeben wie Datensätze in t2 vorhanden sind.
MySQL RIGHT JOIN
SELECT t1.col1, t1.col2, t2.col1, t2.col2 FROM table t1 RIGHT JOIN table2 t2 ON t2.id = t1.id WHERE t1.id = 1;
- Anders als beim LEFT JOIN werden die Daten die in t1 nicht vorkommen als "null" angezeigt.
MySQL INNER JOIN
SELECT t1.col1, t1.col2, t2.col1, t2.col2 FROM table t1 INNER JOIN table2 t2 ON t2.id = t1.id WHERE t1.id = 1;
- Gibt nur Daten aus wenn in t2 Datensätze vorhanden sind.
- Diese Abfrage eignet sich besonders wenn man sicherstellen möchte, dass sich Daten in beiden Tabellen befinden, ansonsten wird die komplette Zeile weggelassen.
MYSQL FULL JOIN
SELECT t1.col1, t1.col2, t2.col1, t2.col2 FROM table t1 FULL JOIN table2 t2 ON t2.id = t1.id WHERE t1.id = 1;
- Kombination aus LEFT und RIGHT JOIN
- Daten die in t2 nicht vorkommen werden als "null" angezeigt und Daten die in t1 nicht vorkommen werden als "null" angezeigt.