首页 > 解决方案 > 如何找到在所有商店出售的产品

问题描述

我有一张带有商店(id,shop_name,address)的表,还有一张表 sales(shops_id,product_id,product_name,price,quantity)。我怎么能展示在所有商店都出售的产品。

我背后的逻辑是,我正在计算 10 家商店的数量,如果产品在这 10 家商店都有销售,但仍然不起作用。

select product_id, product_name from sales
join shops on sales.shopsid = shops.id
group by(product_id, product_name)
having count(shop_name) = 10;

结果应该是在所有商店出售的产品 ID 和产品名称。

标签: sqlpostgresqlrelational-division

解决方案


您可以使用聚合,但我认为您需要count(distinct)

select s.product_id, s.product_name
from sales s
group by s.product_id, s.product_name
having count(distinct s.shop_id) = (select count(*) from shops);

推荐阅读