Mysql 选择最畅销的产品

Mysql 选择最畅销的产品,mysql,Mysql,我有三张这样的桌子 orders(id, status, ...) products(id, created_at, ...) product_order(order_id, product_id, quantity) 我想先选择最畅销的产品,然后根据数量继续购买最新的产品,这是我的尝试 SELECT products.* FROM products LEFT JOIN product_order ON product_order.product_id = products.id LEFT J

我有三张这样的桌子

orders(id, status, ...)
products(id, created_at, ...)
product_order(order_id, product_id, quantity)
我想先选择最畅销的产品,然后根据数量继续购买最新的产品,这是我的尝试

SELECT products.* FROM products
LEFT JOIN product_order ON product_order.product_id = products.id
LEFT JOIN orders ON orders.id = product_order.order_id
WHERE orders.status != 'REJECTED'
GROUP BY product_order.product_id
ORDER BY COUNT(*) DESC, products.created_at
此语句返回未首先销售的产品,因为我使用的是left join,它们的数量比已销售的产品多。。我也不知道如何考虑数量


谢谢您,

如果您想要销售最多的产品,请添加

AND products.quantity = SELECT max(quantity) from products
在您的
WHERE
语句之后,应该可以:

SELECT p.*, sum(po.quantity) qty
FROM products p
LEFT OUTER JOIN product_order po ON po.product_id = p.id
LEFT OUTER JOIN orders        o  ON o.id          = po.order_id
WHERE o.status != 'REJECTED'
GROUP BY po.product_id
ORDER BY qty DESC, p.created_at