Sql 如何查询所有从商店购买并了解其订单的用户

Sql 如何查询所有从商店购买并了解其订单的用户,sql,postgresql,Sql,Postgresql,假设您有3个表(用户、产品和订单),这些表满足以下要求: 产品表有一个storeID字段 orders表有一个productID和userID字段 当您只知道storeID时,查询所有唯一用户的最佳方法是什么?可以描述表中可用的列吗? 你能试试这样的东西吗 select distinct userID from store_table as a inner join order_table as b on a.storeID=b.storeID inner join user_table a

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

  • 产品表有一个storeID字段
  • orders表有一个productID和userID字段

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

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

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'
试试这个:

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

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

我更喜欢用这个

SELECT DISTINCT ID
FROM users u
INNER JOIN products p ON p.userID = u.ID
WHERE 
    p.storeID IN(SELECT storeID FROM orders)
在我看来,最好是从最小的表开始查询,而对较大的表使用JOIN,这样可以在JOIN部分更具选择性,使查询更优雅,并有一些性能改进

如果需要,可以通过向查询中添加更多条件来提高选择性