2016-08-20 197 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。 –