← Все вопросы
Как соединить три таблицы в одном запросе (users, orders, products)?
15
У меня users(id, name), orders(id, user_id, product_id), products(id, title). Хочу вывести имя пользователя и название товара, который он заказал. С двумя таблицами JOIN понятен, а как прицепить третью?
2 ответа
26
Просто пишешь JOIN несколько раз подряд — каждый следующий цепляется к уже собранному результату:
SELECT u.name, p.title
FROM orders o
JOIN users u ON u.id = o.user_id
JOIN products p ON p.id = o.product_id;
Стартуй от таблицы, которая связывает остальные (тут orders — в ней есть и user_id, и product_id). Псевдонимы (o, u, p) сильно облегчают жизнь, когда таблиц много.
Дарья Морозова алиасы — мастхэв, без них в трёх таблицах запутаешься в одинаковых id · 8 месяцев назад
11
Главное — у каждого JOIN своё условие ON. Забудешь ON и получишь декартово произведение (каждая строка с каждой), результат раздуется в разы.
Ваш ответ
Войдите, чтобы ответить на вопрос.