[英]mysql query returns wrong for grouped data
這是稱為匹配的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
並針對每個結果進行相同的查詢,但問題是經緯度表示本月沒有任何下注,因此本月未返回任何內容,因此表格順序錯誤。
如何在一個查詢中獲得所有贏/輸,您的過濾器正在過濾結果,因此您不會獲得查詢的結果以丟失匹配項
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
使用表達式時,將導致布爾值,並且表達式為true時為1,如果表達式結果為false,則為0,換句話說,您可以簡單地通過sum來獲得計數通過您的條件發揮作用
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.