2016-08-20 181 views
0

我在零售POS应用程序中有两个简单表格。称为产品和product_sales。 product_sales记录所有以不同订单进行的销售。我想显示一个页面,其中列出我所有的产品通过其销售的数量排序...Sql查询以按日销售顺序显示所有产品

PRODUCTS

PRODUCT SALES

现在我想写一个SQL查询,可售我的所有产品。 ..我认为一个左连接...可以显示为该产品所做的所有销售的总和...并将它们排序为RANK即畅销商品。

SCREEN

我与SQL初学者...不知道该怎么写。这是我尝试过但没有工作。

SELECT DISTINCT p1.name, 
       p1.id 
FROM products p1 
LEFT JOIN 
product_sales p2 
    ON p1.id = p2.product_id 
ORDER BY SUM(p2.quantity) 
+0

做了“买卖”指的是在'product_sales'表中的一个记录,或者是销售数量列? –

+1

您能否附上数据样本? – dhS

+1

我尝试了一个答案,你想为每个产品总结数量。你应该包括样本数据,并在你的代表水平,我期望这一点。 –

回答

1
SELECT t1.name, 
     COALESCE(t2.totalQuantity, 0) 
FROM products t1 
LEFT JOIN 
(
    SELECT product_id, SUM(quantity) AS totalQuantity 
    FROM product_sales 
    GROUP BY product_id 
) t2 
    ON t1.id = t2.product_id 
ORDER BY t2.totalQuantity DESC  -- show highest selling product first 
+0

优秀!像魅力一样工作。我以前从未遇到过COALESCE和如此复杂的查询。将需要更多细节探索SQL。 –

相关问题