我正在尝试编写一个查询,列出从德克萨斯州的每家商店购买商品的所有客户。
所以这里有4个表及其属性:
Customers:
customerID, CustomerName
Purchases:
CustomerID, ProductID
StoresInventory:
StoreID, ProductID
StoreLocation:
StoreID, State
我可以查询返回德克萨斯州的所有商店,但我不确定如何检查客户是否从所有这些商店购买了产品。另外,我无法使用count
或aggregation
。
有谁知道怎么做?
答案 0 :(得分:1)
除非ProductID对商店是唯一的;您想要的数据不存储在架构中。您知道客户购买了哪些产品以及商店库存的产品,但您没有存储客户购买产品的商店。
答案 1 :(得分:1)
尝试这样的事情:
Select c.CustomerId From Customers c
Inner Join Purchases p on C.CustomerId=p.CustomerId
Inner Join StoresInventory s on s.ProductID=p.ProductID
Group By c.CustomerId
Having COUNT(Distinct s.StoreId)=(Select Count(Distinct StoreId) From StoreLocation Where State='Texas')
答案 2 :(得分:0)
SELECT a.customerid
FROM purchases a
JOIN store_inventory b
ON a.productid=b.productid
GROUP BY a.customerid
HAVING count(distinct storeid)=
(SELECT count(*)
FROM store_location s);