LEFT JOIN - це тип JOIN, який повертає всі рядки з лівої таблиці, навіть якщо у правій таблиці немає відповідних збігів. Якщо збіг у правій таблиці є - дані з неї додаються а якщо збігу немає - замість значень з правої таблиці буде NULL.
Розберемо приклад
Ми маємо дві таблиці users i orders. Наша задача полягає в тому щоб отримати всіх користувачів разом з замовленнями. Якщо в користувача немає замовлення, ми все одно маємо включити його в список тому ми будемо використовувати LEFT JOIN.
-- users
id | name
------------
1 | Alice
2 | Bob
3 | Charlie
-- orders
id | user_id | product
------------------------
1 | 1 | Laptop
2 | 1 | Mouse
3 | 2 | Keyboard
Запит буде мати наступний вигляд. Давайте розберемо його детальніше:
-- Вибираємо стовпці, які хочемо бачити в результаті:
-- name - з таблиці users
-- product - з таблиці orders
SELECT
users.name,
orders.product
FROM
users
-- Робимо LEFT JOIN — тобто беремо ВСІ рядки з таблиці users (ліва таблиця)
-- і додаємо дані з таблиці orders (права таблиця), якщо знайдеться збіг.
LEFT JOIN
orders
-- Визначаємо умову, за якою пов’язуються рядки з обох таблиць:
-- якщо значення users.id збігається з orders.user_id, то ці рядки об’єднуються.
ON
users.id = orders.user_id;
В результаті виконання запиту, ми отримаємо такий результат:
name | product
-------------------
Alice | Laptop
Alice | Mouse
Bob | Keyboard
Charlie | NULL -- Хоч і Charlie не має співпадінь в правій таблиці, LEFT JOIN все одно додає його до вибірки, але в значенні правої таблиці буде NULL