如何選擇最暢銷的產品標題(或*)訂購?有兩個相關的表,事務:我的搜索找不到預期的結果
id|product_id|amount
-------------------------
1| 1 | 1
2| 1 | 3
3| 2 | 3
4| 2 | 1
5| 1 | 7
產品信息:
id|title |
--------------
1| DVD1 |
2| Bag |
3| DVD2 |
4|Playstaion|
5| Xbox |
如何選擇最暢銷的產品標題(或*)訂購?有兩個相關的表,事務:我的搜索找不到預期的結果
id|product_id|amount
-------------------------
1| 1 | 1
2| 1 | 3
3| 2 | 3
4| 2 | 1
5| 1 | 7
產品信息:
id|title |
--------------
1| DVD1 |
2| Bag |
3| DVD2 |
4|Playstaion|
5| Xbox |
試試這個:
SELECT p.id,p.title,SUM(t.amount) as SOLD FROM products p INNER JOIN
transactions t on p.id=t.product_id
GROUP BY p.id,p.title
ORDER BY SUM(t.amount) DESC
結果:
ID TITLE SOLD
1 DVD1 11
2 Bag 4
參見導致SQL Fiddle。
編輯:
對於還顯示未售出的物品,我們必須使用LEFT JOIN
和IF NULL()
。
SELECT p.id,p.title,IFNULL(SUM(t.amount),0) as SOLD
FROM products p LEFT JOIN
transactions t on p.id=t.product_id
GROUP BY p.id,p.title
ORDER BY SUM(t.amount) DESC
結果:
ID TITLE SOLD
1 DVD1 11
2 Bag 4
3 DVD2 0
4 Playstaion 0
5 Xbox 0
參見導致SQL Fiddle。
說明:
IF NULL()
返回0,如果參數爲空。
謝謝,除非事務表中不存在現有產品(零銷售),否則它不會被選中。我還需要展示沒有銷售的產品。 – user3325861
@ user3325861:編輯我的答案。新的查詢中也會選擇非銷售商品。 –
你必須'JOIN',它是關係數據庫101. –