← Все вопросы

Как соединить три таблицы в одном запросе (users, orders, products)?

Задан 9 месяцев назад643 просмотров2 ответа
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 и получишь декартово произведение (каждая строка с каждой), результат раздуется в разы.

Ваш ответ

Войдите, чтобы ответить на вопрос.
Поддержать проект