LEFT JOIN возвращает все строки из левой таблицы и добавляет данные из правой таблицы, если совпадение найдено. Если совпадения нет, поля правой таблицы будут заполнены значением NULL.
Левая таблица – это та, которая указана после FROM.
Пример:
SELECT clients.name, orders.amount
FROM clients
LEFT JOIN orders ON clients.id = orders.client_id;
Такой запрос покажет всех клиентов. Если у клиента есть заказ, рядом будет сумма заказа. Если заказов нет, в поле orders.amount будет NULL.
LEFT JOIN особенно полезен для аналитических задач. С его помощью можно не только получить связанные данные, но и увидеть, где связи отсутствуют.
Например, нужно найти клиентов, которые еще ничего не покупали:
SELECT clients.name
FROM clients
LEFT JOIN orders ON clients.id = orders.client_id
WHERE orders.id IS NULL;
Здесь логика такая: сначала SQL берет всех клиентов, затем пытается найти их заказы, а после этого оставляет только тех, у кого заказ не найден.
LEFT JOIN часто используется, когда важно сохранить основную сущность:
- Все клиенты и их заказы, если они есть;
- Все товары и остатки на складе, если они заведены;
- Все заявки и комментарии менеджеров, если комментарии уже оставлены;
- Все пользователи и последние авторизации, если они были;
- Все договоры и платежи, если оплаты поступали.
Для системного аналитика LEFT JOIN важен еще и потому, что он помогает находить «дыры» в данных: незаполненные связи, ошибки интеграции, незавершенные процессы, отсутствие обязательных записей.