2014-02-20 97 views
1

我有三個表這樣選擇頂級銷售產品

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 

此聲明返回的產品不是首先銷售,因爲我使用的是左連接,它們的數量超過了銷售數量。我也不知道如何考慮數量

謝謝

回答

2

之後添加

AND products.quantity = SELECT max(quantity) from products 

這應該工作:

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 
+0

它的工作:)非常感謝 –

0

如果你最想要的產品銷往則可以將WHERE聲明