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