我寻找最畅销产品的搜索没有返回预期的结果

时间:2014-03-19 07:09:17

标签: mysql sorting search sum

如何通过畅销选择产品标题(或*)?有两个相关的表,交易:

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    |

1 个答案:

答案 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 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中的结果。

<强>解释

如果参数为null,

IF NULL()将返回0。