获得具有指定产品的大多数销售产品

时间:2016-10-16 20:53:08

标签: mysql sql database

我有一个带有此信息的表order_detail

id_order  id_product
1         2
1         3
2         2
2         4
2         5
2         3
3         2
3         1
4         2 
4         3
4         1
4         6

我想用当前产品获得大多数销售的产品(前5个元素)让我们说产品ID 2

我尝试了这个,但它返回了一个错误的结果

SELECT od2.product_id, count(od2.`product_id`) FROM `ps_order_detail` od1  
LEFT JOIN ps_order_detail od2 ON od1.id_order = od2.id_order where
od2.product_id != od1.product_id AND od1.product_id=2

结果应为

product_id    count(od2.`product_id`)
3             3
4             2
1             1
5             1 
6             1

1 个答案:

答案 0 :(得分:1)

您的查询是在正确的轨道上。大多数情况下,您错过了group by

select od.product_id, count(od2.id_order) as NumTimesWith2
from ps_order_detail od left join
     ps_order_detail od2
     on od.id_order = od2.id_order and
        od2.product_id = 2 
where od.product_id <> 2
group by od.product_id
order by count(od2.id_order) desc;

如果您只想要一个此类产品,请在查询中添加limit 1

此外,这假设产品不会在订单内重复。如果可以,您可以使用count(distinct od.id_order))快速获得更好的计数。