从mysql中计算最畅销的产品

时间:2013-12-27 04:32:26

标签: mysql

我试图通过创建一个mysql查询获得最畅销的产品列表。问题是即使我使用计数后它仍然可以获得所有数据。

select 
    mf.*,
    od.*,
    count(od.product_id) as product_count
from masterflight mf , 
    order_details od 
where od.product_id=mf.ProductCode 
group by od.product_id 
order by product_count

此处masterflight是产品详细信息与其ID一起存储的表。并且order_details是存储每个产品的记录的表格。我试图把一个逻辑假设一个id 2的产品卖了4次,每次它有一个单独的条目然后我会用COUNT计算那些然后显示它做的那个好像在起作用。

1 个答案:

答案 0 :(得分:1)

尝试更整洁的东西:

select
    mf.ProductCode,
    count(od.*) as product_count
from
    order_details od
    inner join masterflight mf on
        od.product_id = mf.ProductCode
group by
    mf.ProductCode
order by product_count desc

问题是你选择了所有的od,但你没有按它进行分组,所以你只是得到了所有的订单行,这根本没有帮助你。我应该注意到,MySQL是唯一一个允许这种行为的主要RDBMS - 而且它令人困惑且难以调试。我建议不要使用该特定功能。作为一般规则,如果您选择了一个列但没有聚合(例如 - sumavgmin等),那么您需要它在group by条款中。