Ответ
LEFT JOIN (или LEFT OUTER JOIN) возвращает все записи из левой таблицы (Table A) и только те сопоставленные записи из правой таблицы (Table B), для которых условие соединения выполняется. Если соответствия в правой таблице нет, то все столбцы из правой таблицы в результирующей строке будут иметь значение NULL.
Аналогия с диаграммой Эйлера: Представьте два пересекающихся круга.
- Весь левый круг (A) попадает в результат.
- Пересечение (A ∩ B): Записи, где есть соответствие в обеих таблицах. Столбцы из B будут заполнены.
- Часть левого круга без пересечения (A B): Записи из A, для которых нет соответствия в B. Столбцы из B будут
NULL. - Часть правого круга без пересечения (B A): Эти записи НЕ попадают в результат LEFT JOIN.
Пример на SQL:
-- Таблицы
-- Employees (id, name, department_id)
-- Departments (id, department_name)
SELECT
e.name AS employee_name,
d.department_name
FROM Employees e
LEFT JOIN Departments d ON e.department_id = d.id;
Результат будет содержать:
- Всех сотрудников из таблицы
Employees. - Для сотрудников, у которых есть
department_id, соответствующий записи вDepartments, будет указано название отдела (department_name). - Для сотрудников, у которых
department_idравенNULLили не найден вDepartments, в колонкеdepartment_nameбудетNULL. Это позволяет видеть всех сотрудников, даже тех, кто не привязан к отделу.