Ответ
LEFT JOIN и RIGHT JOIN — это типы внешних соединений (OUTER JOIN), которые определяют, какие строки из соединяемых таблиц будут включены в результирующий набор, даже если для них нет совпадений.
LEFT JOIN
Возвращает все строки из левой (первой) таблицы и только совпадающие строки из правой таблицы. Если совпадения нет, поля из правой таблицы заполняются NULL.
-- Найти всех клиентов и их заказы (включая клиентов без заказов)
SELECT c.CustomerName, o.OrderId, o.OrderDate
FROM Customers c
LEFT JOIN Orders o ON c.CustomerID = o.CustomerID;
RIGHT JOIN
Возвращает все строки из правой (второй) таблицы и только совпадающие строки из левой таблицы. Если совпадения нет, поля из левой таблицы заполняются NULL.
-- Найти все заказы и информацию о клиентах (включая заказы без привязанного клиента)
SELECT c.CustomerName, o.OrderId, o.OrderDate
FROM Customers c
RIGHT JOIN Orders o ON c.CustomerID = o.CustomerID;
Ключевое отличие и практика
- LEFT JOIN используется гораздо чаще, так как запросы обычно строятся от основной сущности (например, от клиентов к их заказам).
- Любой RIGHT JOIN можно переписать как LEFT JOIN, просто поменяв таблицы местами. Поэтому RIGHT JOIN встречается редко — для единообразия кода предпочитают использовать только LEFT JOIN.
- INNER JOIN (внутреннее соединение) возвращает только строки, где есть совпадение в обеих таблицах, в отличие от внешних соединений.
Видео-ответы
▶
▶
▶
▶
▶
▶
▶
▶