mysql - 如何在执行多个联接时从单个表中计数
问题描述
我被问到以下问题:根据售出的单位数量而不是订购的单位数量查找供应我们最著名产品的 3 家供应商。将它们排在第一到第三。
使用的数据库是网上的classicmodels db:http ://mysqltutorial.org//tryit/
这就是我所做的,我似乎无法仅计算付款并按供应商分组。我得到的计数是所有连接的乘积。
SELECT p.productvendor FROM products AS p
INNER JOIN orderdetails AS od ON p.productcode = od.productcode
INNER JOIN orders AS o ON o.ordernumber = od.ordernumber
INNER JOIN customers AS c ON c.customernumber = o.customernumber
INNER JOIN payments AS py ON py.customernumber = c.customernumber
GROUP BY p.productvendor
ORDER BY COUNT(p.productvendor) DESC
LIMIT 3
解决方案
尝试将问题分解为更小的查询,然后尝试优化连接。
选择 count(p.productvendor) 作为 product_count, p.productvendor from ( JOINS ) group by p.productvendor
-- this should give count by vendor. you can use sum(orderdetails.qty) also in case you
所以问题被简化为在JOINS
JOINS(必须是单个产品销售的集合)
推荐阅读
- javascript - 在javascript中的矩阵中删除随机数量的数字
- amazon-s3 - 如何配置 Amazon Cloudfront 以正确地为我的 Gatsby 应用程序提供服务?
- python - 如何在 Elasticsearch 和 Python 脚本的单个查询中处理多个文档的更新
- esp8266 - 如何使用 platformio cli 更新到最新的 esp8266 arduino 框架?
- javascript - 在云功能中发送通知后如何保存有效负载?
- ios - 从Bundle加载图像我得到一个零
- mysql - 我的 JOIN SQL 查询需要很长时间才能完成
- javascript - 移动视图上的徽标未居中
- javascript - 打开模态后,其他按钮不起作用
- javascript - 数组到嵌套数组的转换