获得最畅销的产品

时间:2016-03-13 23:05:06

标签: mysql sql

好吧,我想获得最畅销的产品,但是当我想要获得它们时。它只是返回最畅销的产品,但不是idventa,idproduct和description。返回值,但它们是错误的值,它们属于另一个。我需要有人帮我纠正我在sql上的声明,因为我想返回正确的值,如:idventa:7 - idproducto:10,descripcion:IPHONE 4S,best_selling_product:5000,而不是其他不属于他们的值句子

SELECT
   idventa,idproducto,descripcion,MAX(venta_detalle.cantidad) AS best_selling_product 
FROM venta_detalle 
     INNER JOIN producto 
     ON venta_detalle.idproducto = producto.id   

2 个答案:

答案 0 :(得分:0)

在不知道你的桌面结构的情况下,猜测你正在寻找什么有点困难。有时,如果该字段存在group by值,则可以添加distinct子句。

其他时候,您需要使用子查询中的聚合将表join返回给自己:

select
   p.idproducto, 
   p.descripcion,
   vd.idventa, 
   vd.cantidad
from producto p 
   join venta_detalle vd on vd.idproducto = p.id
   join (select idproducto, max(cantidad) best_selling_product 
         from venta_detalle
         group by idproducto) vd2 on vd.idproducto = vd2.idproducto and
                                    vd.cantidad = vd2.best_selling_product

答案 1 :(得分:0)

尽管max()将返回最高数字而没有分组,但它也会将结果集折叠为单个记录,但是,不能保证其他字段将来自与max相同的记录。我建议使用简单的order by和限制组合来获得具有最高值的记录:

SELECT
   idventa,idproducto,descripcion, venta_detalle.cantidad AS best_selling_product 
FROM venta_detalle 
     INNER JOIN producto 
     ON venta_detalle.idproducto = producto.id
ORDER BY venta_detalle.cantidad DESC
LIMIT 1