2014-03-19 37 views
1

如何選擇最暢銷的產品標題(或*)訂購?有兩個相關的表,事務:我的搜索找不到預期的結果

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

你必須'JOIN',它是關係數據庫101. –

回答

1

試試這個:

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 JOINIF 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,如果參數爲空。

+0

謝謝,除非事務表中不存在現有產品(零銷售),否則它不會被選中。我還需要展示沒有銷售的產品。 – user3325861

+0

@ user3325861:編輯我的答案。新的查詢中也會選擇非銷售商品。 –

相關問題