Несколько JOIN

Базовый SQL
≈ 1 мин чтения

К запросу можно последовательно присоединять новые таблицы

В реальной схеме нужные данные часто распределены больше чем по двум таблицам. SQL позволяет добавлять несколько JOIN подряд, и каждый следующий JOIN работает с уже сформированным промежуточным набором.

SELECT
    o.id,
    u.name,
    p.name AS product_name
FROM orders AS o
JOIN users AS u ON u.id = o.user_id
JOIN products AS p ON p.id = o.product_id;

Сначала заказ связывается с пользователем, затем тот же результат дополняется данными о товаре. Каждое условие ON должно описывать конкретную связь между таблицами.

Читай сложный JOIN по шагам

Когда таблиц много, не пытайся воспринимать запрос как одну длинную конструкцию. Сначала определи базовую таблицу после FROM, затем для каждого JOIN ответь на два вопроса: что добавляется и по какому условию.

Несколько JOIN могут неожиданно увеличить количество строк. Если одна строка слева совпадает с несколькими строками справа, в результате появится несколько строк. При цепочке соединений такой эффект может накапливаться, поэтому всегда понимай кардинальность каждой связи.