mysql查询为分组数据返回错误

时间:2014-04-20 20:14:46

标签: php mysql sql

这是名为matches的mysql表。它包含用户下注的匹配项,发布日期和结果(赢,丢失等)。

http://imgur.com/Umt5Q4m

通过第一个查询,我在用户个人资料上显示他按月分组的投注

SELECT COUNT(*),date,SUM(stake), AVG(stake),result 
FROM matches 
WHERE u_id='$id11' 
GROUP BY DATE_FORMAT(date, '%Y/%m') 
ORDER BY DATE_FORMAT(date, '%Y/%m') DESC 
LIMIT $startrow,10

现在我需要做的是显示这些赌注中有多少赢了,丢失​​了多少,正如你在下面的照片中看到的那样

http://imgur.com/kSOF6Pi

最好的方法是什么?

我已经尝试添加另一个看起来像这样的查询

SELECT COUNT(*) 
FROM matches WHERE u_id='$id11' AND result='win' 
GROUP BY DATE_FORMAT(date, '%Y/%m') 
ORDER BY DATE_FORMAT(date, '%Y/%m') DESC LIMIT $startrow,10

和每个结果的相同查询,但问题是拉丁说本月没有丢失的赌注它本月没有返回任何东西,而且表看起来错误。

1 个答案:

答案 0 :(得分:0)

如何在一个查询中获取所有赢/输,您的位置过滤器正在过滤结果,因此您无法获得查询丢失匹配的结果

SELECT 
 SUM(result='win') `win_count`,
 SUM(result='lost') `lost_count`
FROM matches 
WHERE u_id='$id11'  
GROUP BY DATE_FORMAT(date, '%Y/%m') 
ORDER BY DATE_FORMAT(date, '%Y/%m')
DESC LIMIT $startrow,10

在上面的查询中,我使用了带有表达式的SUM函数,当在SUM中使用表达式时,它将产生一个布尔值,表达式为1表示为真,如果表达式为假,则为0换句话说,您可以通过使用条件

简单地计算总和函数