我最近做了一個系統,根據他們的積分對每個玩家進行排名。那麼系統獲得積分的方式相當混亂。在使用這個系統超過24小時後,我發現它沒有按照要點進行組織。但是後來突然想到,我可能會用一種不代表SQL查詢的方式來計算錯誤點。下面是我的排名使用我的SQL查詢:有什麼方法可以查找查詢的值嗎?
SELECT * , playeruid AS player_id, (
(
SELECT COALESCE(sum(player1points),0)
FROM `mybb_matches`
WHERE player1uid = player_id AND gid = $id AND timestamp < $time AND winneruid is NOT NULL AND dispute != 3)
+
(
SELECT COALESCE(sum(player2points),0)
FROM `mybb_matches`
WHERE player2uid = player_id AND gid = $id AND timestamp < $time AND winneruid is NOT NULL AND dispute != 3)
+
(
SELECT SUM(rank)
FROM `mybb_matchesgame`
WHERE playeruid = player_id AND gid = $id)
)
AS points
FROM mybb_matchesgame WHERE gid = $id
ORDER BY points DESC
現在,這顯示,我在想,如果有任何的方式來攫取的「點」的值,並以某種方式顯示出來,所以我可以確認的數量。這可能嗎?
'不按照點組織它 - 但你有'ORDER BY points DESC' ?? '搶「點」的值 - 但你有'SELECT'?換句話說,我不明白問題是什麼。 – 2015-04-06 00:21:48
我試圖確保查詢正常。我想驗證查詢爲每個用戶收集的「分數」是否正確。有沒有辦法讓我抓住這個「分數」?也許在某處迴應它? – 2015-04-06 00:25:31
如果您直接在phpmyadmin或mysql命令行界面中執行單個子查詢,是否按預期工作?在子查詢中,'player_id'是主表'mybb_matchesgame'中的當前值嗎?如果是這樣,請嘗試向主表添加別名:'FROM mybb_matchesgame m WHERE gid = $ id',然後用它作爲其他值的前綴,即'WHERE player1uid = m.player_id' – 2015-04-06 00:25:35