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?
Dobrze.
LEFT JOIN zwraca wszystkie wiersze lewej tabeli, a braki z prawej uzupełnia NULL.Źle.
RIGHT JOIN zachowuje wszystkie wiersze prawej tabeli, nie lewej.Źle.
INNER JOIN zwraca tylko wiersze mające dopasowanie w obu tabelach.Źle.
CROSS JOIN zwraca iloczyn kartezjański - każdy wiersz z każdym.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.