Ответ
JOIN — это оператор SQL, который позволяет объединять строки из двух или более таблиц на основе логической связи (условия) между ними. Связь обычно устанавливается по совпадению значений в ключевых столбцах (например, первичный ключ одной таблицы и внешний ключ другой).
Основные типы JOIN (на примере двух таблиц):
-
INNER JOIN- Возвращает только те строки, где есть совпадение в обеих таблицах.
- Строки без совпадения с любой из сторон исключаются из результата.
-- Найти всех пользователей, сделавших заказы SELECT users.name, orders.id, orders.total FROM users INNER JOIN orders ON users.id = orders.user_id;
-
LEFT (OUTER) JOIN- Возвращает все строки из левой (первой) таблицы и совпадающие строки из правой.
- Если совпадения нет, для столбцов правой таблицы будут значения
NULL.-- Найти всех пользователей и их заказы (если есть) SELECT users.name, orders.id FROM users LEFT JOIN orders ON users.id = orders.user_id; -- В результате будут даже пользователи без заказов.
-
RIGHT (OUTER) JOIN- Обратный
LEFT JOIN. Возвращает все строки из правой таблицы и совпадающие из левой. - Используется реже, так как порядок таблиц можно поменять и использовать
LEFT JOIN.
- Обратный
-
FULL (OUTER) JOIN- Возвращает все строки из обеих таблиц.
- Если совпадение есть, строки объединяются. Если совпадения нет для строки из одной таблицы, недостающие столбцы заполняются
NULL.
Визуализация (A и B — таблицы):
INNER JOIN: Пересечение A и B
LEFT JOIN: Вся A + пересечение с B
RIGHT JOIN: Вся B + пересечение с A
FULL JOIN: Объединение A и B
Практическое применение в тестировании: Проверка целостности данных (все ли заказы имеют валидного пользователя), анализ логов, связанных с пользователями, сложные проверки отчетности.