Ответ
В SQL операции JOIN используются для объединения строк из двух или более таблиц на основе связанного столбца. Основные виды:
-
INNER JOIN(или простоJOIN): Возвращает только те строки, для которых есть совпадение в обеих таблицах.SELECT employees.name, departments.name FROM employees INNER JOIN departments ON employees.department_id = departments.id; -
LEFT (OUTER) JOIN: Возвращает все строки из левой (первой) таблицы и соответствующие строки из правой. Если совпадения нет, поля из правой таблицы будутNULL.SELECT employees.name, projects.title FROM employees LEFT JOIN projects ON employees.id = projects.lead_id; -- Покажет всех сотрудников, даже тех, кто не ведёт проект -
RIGHT (OUTER) JOIN: АналогиченLEFT JOIN, но приоритет отдан правой таблице. Возвращает все строки из правой таблицы и совпадения из левой. -
FULL (OUTER) JOIN: Возвращает все строки из обеих таблиц. Если для строки из одной таблицы нет совпадения в другой, недостающие поля заполняютсяNULL. -
CROSS JOIN: Возвращает декартово произведение таблиц — каждая строка первой таблицы соединяется с каждой строкой второй. Может генерировать очень большие результирующие наборы.SELECT sizes.size, colors.color FROM sizes CROSS JOIN colors; -- Создаст все возможные комбинации размеров и цветов -
SELF JOIN: Технически это обычныйJOINтаблицы с самой собой. Часто используется для работы с иерархическими данными (например, таблица сотрудников с полемmanager_id).SELECT e1.name AS Employee, e2.name AS Manager FROM employees e1 LEFT JOIN employees e2 ON e1.manager_id = e2.id;