Ответ
Соединение трёх таблиц выполняется последовательными операторами JOIN. Структура запроса:
SELECT
t1.column_name,
t2.column_name,
t3.column_name
FROM table1 AS t1
JOIN table2 AS t2 ON t1.id = t2.table1_id
JOIN table3 AS t3 ON t2.id = t3.table2_id
WHERE [условия];
1. Основные типы соединений:
INNER JOIN: Возвращает только строки, для которых есть совпадения во ВСЕХ соединяемых таблицах.LEFT JOIN: Возвращает все строки из левой (первой) таблицы и совпадения из правых. При отсутствии совпадений возвращаетсяNULL.
2. Практический пример (пользователи, заказы, товары):
SELECT
u.name AS user_name,
o.order_date,
p.product_name
FROM users u
INNER JOIN orders o ON u.id = o.user_id
INNER JOIN products p ON o.product_id = p.id
WHERE o.status = 'completed';
3. Важные аспекты:
- Порядок соединений может влиять на производительность. Стоит начинать с самой селективной таблицы.
- Используйте алиасы (
AS) для удобства чтения запроса. - Проверяйте условия
ON, чтобы избежать декартова произведения (когда каждая строка одной таблицы соединяется с каждой строкой другой). - Для сложных соединений используйте скобки или
CTE(Common Table Expressions) для улучшения читаемости.