如何通过畅销选择产品标题(或*)?有两个相关的表,交易:
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 |
答案 0 :(得分: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 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中的结果。
<强>解释强>
如果参数为null, IF NULL()
将返回0。