我正在嘗試使用MySQL查詢來構建用戶在Bowl Mania遊戲中的排行榜(用戶每次嘗試預測每個學院的獲勝者足球比賽,併爲每個選項分配一個分數權重)。將查詢轉換爲左連接(?)以包含不匹配的用戶ID
我有3個表:
--games
id team1 team2 year
--picks
userid gameid points
--actResults
gameid winner
我想建立它可以根據他們對每個成功預測遊戲「點」下注夏天每個用戶一個SELECT查詢(即5一個成功的賭注在gameid = 1時獲得5分,而不成功的預測則獲得0分)。
下面的查詢幾乎完成我想要的,但唯一的問題是它不包括具有零點的用戶(即picks.winners和actResults.winners之間沒有任何匹配的用戶)。
SELECT DISTINCT picks.userid AS Player, SUM(picks.points) AS Points
FROM picks, games, actResults
WHERE picks.gameid = games.id
AND picks.winner = actResults.winner
AND games.year = '2014'
AND picks.userid = picks.userid
GROUP BY picks.userid
ORDER BY Points DESC
期望的結果會是這個樣子
Player Points
User1 10
User4 9
User3 4
User2 0
User5 0
查詢中的'AND picks.userid = picks.userid'部分是一個no- op,除非可能發生'picks.userid'永遠爲空,在這種情況下,查詢的部分等同於'AND picks.userid IS NOT NULL'。另外 - 除非'picks.winner' /'actResults.winner'包含比我預期更多的細節,我認爲你需要添加一些條件來限制你的'actResults'。否則,你會計算指定團隊贏得*任何*遊戲的情況,而不是他們贏得*特定*遊戲的情況。 – ruakh