Как сделать запрос в SQL из трех таблиц в одном утверждении? - PullRequest
0 голосов
/ 16 февраля 2019

У меня есть три таблицы, как показано ниже.

Как получить (в одной инструкции запроса) "product_name", который был заказан user_id = 1?(product_name для 1, 2,3, которые заказал user_1)?

enter image description here

Ответы [ 4 ]

0 голосов
/ 16 февраля 2019

Не уверен, что понимаю ваш вопрос ...

Может быть, это может помочь вам

SELECT product_name
FROM orders
INNER JOIN products ON products.product_id = orders.product_id
WHERE orders.user_id = 1

Обратите внимание, что - таблица пользователей в этом случае не требуется, так как вам все равноо имени пользователя - вы получите повторяющиеся строки для того же имени продукта

0 голосов
/ 16 февраля 2019

Вам необходимо присоединиться к 3 столам:

select u.user_name, p.*
from products p inner join orders o
on o.product_id = p.product_id
inner join users u
on u.user_id = o.user_id
where u.user_id = 1
0 голосов
/ 16 февраля 2019

Просто нужно (inner)join между двумя заказами столов и продуктами

select p.product_name 
  from products p
  join orders o on p.product_id = o.product_id
 where o.user_id = 1

или natural join может использоваться

select product_name 
  from products p
  natural join orders o
 where user_id = 1
0 голосов
/ 16 февраля 2019

Нечто подобное поможет

select * from products
where exists (
   select 1 from orders o
   inner join users u
      on o.user_id = u.user_id
   where o.product_id = u.product_id
);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...