这是名为matches的mysql表。它包含用户下注的匹配项,发布日期和结果(赢,丢失等)。
通过第一个查询,我在用户个人资料上显示他按月分组的投注
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
现在我需要做的是显示这些赌注中有多少赢了,丢失了多少,正如你在下面的照片中看到的那样
最好的方法是什么?
我已经尝试添加另一个看起来像这样的查询
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
和每个结果的相同查询,但问题是拉丁说本月没有丢失的赌注它本月没有返回任何东西,而且表看起来错误。
答案 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换句话说,您可以通过使用条件