有人问我以下问题: 找到3家供应我们最著名产品的供应商(按已售出的数量而不是订购的数量)。将他们排名第一到第三。
使用的数据库是在线classicmodels数据库: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
答案 0 :(得分:0)
尝试将问题分解为较小的查询,然后尝试优化联接。
选择count(p.productvendor)作为product_count,从( JOINS )组中按p.productvendor选择p.productvendor
-- this should give count by vendor. you can use sum(orderdetails.qty) also in case you
因此问题被减少到了 JOINS
加入(必须是单个产品销售的集合)