Как выполнить соединение (JOIN) трёх таблиц в SQL?

«Как выполнить соединение (JOIN) трёх таблиц в SQL?» — вопрос из категории Базы данных и SQL, который задают на 10% собеседований QA Тестировщик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Соединение трёх таблиц выполняется последовательными операторами 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) для улучшения читаемости.