如何查找在所有商店出售的产品

时间:2019-01-30 12:53:57

标签: sql postgresql relational-division

我有一个带有商店(id,shop_name,address)和另一个表sales(shops_id,product_id,product_name,price,数量)的表。我如何展示所有商店都出售的产品。

我背后的逻辑是,我计算出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和产品名称。

2 个答案:

答案 0 :(得分:0)

您可以使用聚合,但我认为您需要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);

答案 1 :(得分:0)

function add2(y) {
  return add(2, y);
}