sql - 如何找到在所有商店出售的产品
问题描述
我有一张带有商店(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 和产品名称。
解决方案
您可以使用聚合,但我认为您需要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);
推荐阅读
- c - 全局和局部范围变量(为什么第二个打印输出 28 在这里?)
- javascript - 在 React 中获取和更新数据的最佳方法
- javascript - 如何通过单击 var phraseArray 句子上的按钮来添加 css 或 javascript 可重复的打字机效果?
- .net-core - 当 EFCore 尝试将数据从存储库返回到控制器时,为什么 asp.net 核心项目会崩溃?
- go - 浏览器显示先前的响应
- r - 用出现的下一个数字替换 NA
- html - SVG inside HTML table behavior with box-sizing and borders
- xamarin - Xamarin:有没有办法将环境变量注入到 AndroidManifest.xml 文件中?
- api - API 请求中的变音符号编码
- php - 如何使用 PHPExcel 在单元格中存储大量数字?