-1

我有以下 3 个表:

-- 用户 -- id firstname lastname

-- 产品 -- id 名称 价格

-- 购买 -- user_id product_id

我如何显示(选择)id = 1 的用户购买了哪些产品?

4

4 回答 4

4

您可以使用以下内容:

select u.firstname, u.lastname, p.name 
from users u
inner join purchases pc
   on u.id = pc.user_id
inner join products p
   on pc.product_id = p.id
where u.id = 1

这使用您的链接表将所有 3 个表连接在一起purchases

如果您不熟悉JOIN语法,那么这是一个有用的链接:

SQL 连接的可视化解释

于 2012-09-24T20:39:33.333 回答
1

如果您只需要用户 1(而不是用户名)购买的产品,那么产品和购买之间的连接就足够了:

Select prod.name, prod.price 
from products prod 
inner join purchases pur on prod.id = pur.product_id 
where pur.user_id = 1
于 2012-09-24T20:50:24.273 回答
0

这应该这样做:

select * from products
where id in (select product_id from purchases where user_id = 1)
于 2012-09-24T20:38:33.740 回答
0
select *  
from users 
join purchases 
  on users.id = purchases.user_id
join products 
  on products.id = purchases.product_id 
where users.id = 1

如果你真的想要一份产品清单

select distinct(products.name)
from users 
join purchases 
  on users.id = purchases.user_id
join products 
  on products.id = purchases.product_id 
where users.id = 1
order by products.name
于 2012-09-24T20:39:06.260 回答