如何查询从知道订单的商店购买的所有用户

时间:2018-02-02 02:20:28

标签: sql postgresql

假设您有3个表(用户,产品和订单),这些表符合以下要求:

  • 产品表有storeID字段
  • 订单表有productID和userID字段

当您只知道storeID时,查询所有唯一身份用户的最佳方式是什么?

3 个答案:

答案 0 :(得分:1)

所有方法都会给你相同的结果

我更愿意使用这个

SELECT DISTINCT ID
FROM users u
INNER JOIN products p ON p.userID = u.ID
WHERE 
    p.storeID IN(SELECT storeID FROM orders)

在我看来,最好是使用最小的表开始查询,同时使用大表的JOIN,这样你就可以在连接部分更具选择性,并使你的查询更优雅,并且有一些性能改进。

通过在需要时向查询添加更多条件,您可以更具选择性。

答案 1 :(得分:0)

可以描述表格中的可用列吗? 你能尝试这样的东西吗?

select distinct userID
from store_table as a
inner join order_table as b on a.storeID=b.storeID
inner join user_table as c on b.userID=c.userID
where a.storeID='xxxxx'

答案 2 :(得分:0)

试试这个:

SELECT DISTINCT U.UserName 
FROM Orders O
INNER JOIN Products P ON O.productID=P.productID
INNER JOIN Users U ON U.UserID=O.UserID
WHERE P.StoreID=Input_StoreID