SQL: Join
Теория: FULL JOIN (полное соединение)
В этом уроке мы рассмотрим полное внешнее соединение — FULL OUTER JOIN или сокращенно FULL JOIN. Результат этого соединения содержит все строки из обеих таблиц:
- Все пары строк, которые удовлетворяют условию соединения — как в
INNER JOIN - Все строки без пары из первой таблицы
- Все строки без пары из второй таблицы
Применяем FULL JOIN
Пусть в базе данных хранится информация о сотрудниках и отделах. Наша задача — построить отчет, в котором будет указано, в каком отделе работает каждый из сотрудников.
Если есть отделы без сотрудников или сотрудники без отдела, то они тоже должны быть в отчете.
Рассмотрим структуру таблиц.
Таблица departments содержит информацию об отделах:
departments
Таблица employees содержит информацию о сотрудниках:
employees
В данных есть отделы без сотрудников и сотрудники без отделов. Бизнес логика и схема базы данных допускают такие записи.
Выполним полное внешнее соединение этих таблиц по условию departments.department_id = employees.department_id:
Результат выполнения запроса:
Результат содержит всех сотрудников с отделами, все отделы без сотрудников и всех сотрудников без отделов.
Схематично работа FULL JOIN выглядит так:
В результат соединения попадают все пары строк, которые удовлетворяют условию соединения. Также туда попадают все строки без пары из первой (левой) таблицы и все строки без пары из второй (правой) таблицы.
Выводы
Полное внешнее соединение используют, когда в результате должны быть все строки из обеих таблиц, даже если у них нет подходящей пары. Результат FULL JOIN включает в себя результаты INNER JOIN, LEFT JOIN и RIGHT JOIN.
FULL OUTER JOIN и FULL JOIN обозначают одно и то же действие в SQL. Оба они используются для объединения данных из двух таблиц, возвращая все строки из обеих таблиц, даже если нет совпадений.
.png)














