Как использовать оператор LEFT JOIN в SQL?
Оператор LEFT OUTER JOIN (или просто LEFT JOIN) в SQL используется для объединения двух таблиц и вывода всех записей из первой таблицы (левой таблицы), даже если вторая таблица (правая таблица) не содержит соответствующих значений. Если вторая таблица содержит соответствующие значения, они будут присоединены к результату.
Синтаксис LEFT JOIN выглядит следующим образом:
SELECT *
FROM table1
LEFT JOIN table2
ON table1.column_name = table2.column_name;
Здесь table1 - это левая таблица, table2 - правая таблица, column_name - столбец, который содержится в обеих таблицах и используется для объединения.
Рассмотрим пример, где у нас есть две таблицы: таблица пользователей (users) и таблица заказов (orders).
Table users:
| id | name | email |
|----|--------|----------------|
| 1 | Alice | alice@mail.com |
| 2 | Bob | bob@mail.com |
| 3 | Charlie| charlie@mail.com|
Table orders:
| id | user_id | order_date |
|----|---------|------------|
| 1 | 1 | 2021-05-01 |
| 2 | 1 | 2021-05-05 |
| 3 | 2 | 2021-05-10 |
Давайте найдем всех пользователей и для тех, у кого есть заказы, также укажем дату их последнего заказа. Для этого мы можем использовать оператор LEFT JOIN:
SELECT users.id, users.name, orders.order_date
FROM users
LEFT JOIN orders
ON users.id = orders.user_id;
Результатом будет следующая таблица:
| id | name | order_date |
|----|---------|------------|
| 1 | Alice | 2021-05-01 |
| 1 | Alice | 2021-05-05 |
| 2 | Bob | 2021-05-10 |
| 3 | Charlie | NULL |
Здесь мы видим, что для пользователей Alice и Bob у нас есть соответствующие заказы в таблице orders, а для пользователя Charlie нет. Поэтому в столбце с датами заказов для пользователя Charlie мы видим значение NULL.
LEFT JOIN очень полезен, когда вам нужно объединить таблицы, но вы не хотите потерять строки из левой таблицы. Он также может использоваться для создания отчетов, в которых нужно отобразить все данные, даже если для них нет соответствующих данных в других таблицах.