2014-07-17 57 views
1

我正在保存Best-of-Two系列的數據。所以每場比賽都有2場比賽與相同的球隊相關聯。使用子查詢選擇一個計數MYSQL

所以這意味着每場比賽都有兩場比賽,桌上有每場比賽的記錄。

所以每1場比賽就有4條記錄(A隊的第1場比賽,A隊的第2場比賽,B隊的第1場比賽和B隊的第2場比賽)。比賽有3種可能的結果:2-0,1-1或0-2。

實施例:A隊起着3個匹配VS球隊B,C和d去(2-0,2-0和1-1) 我期望從選擇語句的結果是這樣的:

matchId | Team | Wins 
1  | A | 2 
1  | B | 0 
2  | A | 2 
2  | C | 0 
3  | A | 1 
3  | D | 1 

實際數據:

matchId | gameId |teamName | Victory | Loss 
2959  3635  Frost  0  1 
2959  3490  Frost  1  0 
2959  3490  SKT   0  1 
2959  3635  SKT   1  0 
2956  3487  Frost  0  1 
2956  3573  Frost  0  1 
2956  3573  Shield  1  0 
2956  3487  Shield  1  0 
2923  3452  SKT   1  0 
2923  3507  SKT   1  0 
2923  3507  IM1   0  1 
2923  3452  IM1   0  1 

所以用這個代碼,我在尋找:

matchId |teamName | Wins 
2959  Frost  1 
2959  SKT   1 
2956  Frost  0 
2956  Shield  2 
2923  SKT   2 
2923  IM1   0 

這是我當前的代碼試圖弄明白:

SELECT DISTINCT b.matchId, c.teamName, d.Wins 
FROM PoolOfTeams a JOIN (
    SELECT t1.matchId, t1.gameId, t1.teamName FROM poolOfTeams t1 
) b on (b.matchId = a.matchId) JOIN (
    SELECT t2.gameId, t2.teamName FROM poolOfTeams t2 
) c ON (c.gameId = b.gameId) JOIN (
    SELECT t3.teamName, SUM(t3.matchVictory) AS Wins 
    FROM poolOfTeams t3 group by matchId 
) d ON (d.teamName = c.teamName); 

回答

1

嘗試

SELECT matchID, Team, SUM(Win) AS Wins 
FROM  poolOfTeams 
GROUP BY matchID, Team 
ORDER BY Team ASC 

我覺得 'GROUP BY' 是你在找什麼。

編輯:交換了GROUP和ORDER語句的順序。謝謝Rahul。

+0

不應該'按'排序'在'group by'之後嗎?你需要「數(贏)」。 – Rahul

+0

也許。我總是*總是*第一次搞砸訂單,不管我用了多少次。這就像是在100%的時間內插入USB電纜,它在任何時候都不起作用。 –

+0

不起作用。我認爲大部分問題是每1場比賽有4條記錄。 2場比賽中的A隊和B隊的記錄以及2場比賽中A隊和B隊的更多記錄。因此,比賽可能會以2-0,1-1或0-2的比分進行。所以是的,我想讓它按matchId進行分組,但我也希望它能夠總結特定團隊在特定匹配中的勝利數量,即2,1或0. – TaylorM