Którego złączenia należy użyć, aby z dwóch tabel pobrać wszystkie wiersze tabeli po lewej stronie, nawet jeśli nie mają dopasowania w prawej?
Źle.
INNER JOIN zwraca tylko wiersze mające dopasowanie w obu tabelach.Źle.
RIGHT JOIN zachowuje wszystkie wiersze prawej tabeli, nie lewej.Źle.
CROSS JOIN zwraca iloczyn kartezjański - każdy wiersz z każdym.Dobrze.
LEFT JOIN zwraca wszystkie wiersze lewej tabeli, a braki z prawej uzupełnia NULL.LEFT JOIN (lewe złączenie zewnętrzne) zwraca wszystkie wiersze tabeli wymienionej po lewej stronie złączenia, a tam, gdzie nie ma pasującego rekordu w tabeli prawej, kolumny z prawej wypełnia wartościami NULL. Pozwala to np. wypisać wszystkich klientów, także tych bez zamówień. Dlatego do zachowania wszystkich wierszy lewej tabeli służy LEFT JOIN.Pozostałe złączenia działają inaczej.
INNER JOIN zwraca wyłącznie wiersze, które mają dopasowanie w obu tabelach - pominie więc te z lewej bez pary. RIGHT JOIN zachowuje komplet wierszy tabeli prawej, czyli odwrotnie niż w pytaniu. CROSS JOIN tworzy iloczyn kartezjański, łącząc każdy wiersz z każdym, co nie dotyczy dopasowywania po kluczu. Wszystkie wiersze lewej tabeli (z NULL w miejscach bez pary) zwraca LEFT JOIN, dlatego to ono jest poprawne.