2011-08-25 43 views
0

我有一個數據庫,用於跟蹤遊戲統計信息。假設每場比賽包括三輪比賽,達到10分。所以,我的表中的部分看起來像這樣:從單獨的列中排序mysql數據

game | round1home | round1away | round2home | round2away | round3home | round3away 
----------------------------------------------------------------------------------- 
    1 |  10  |  7  |  8  |  10  | 10  |  5 
    2 |  10  |  4  |  10  |  6  | 6  |  10 
    3 |  3  |  10 |  9  |  10  | 7  |  10 
    4 |  10  |  5  |  6  |  10  | 10  |  3 
    5 |  8  |  10 |  10  |  7  | 7  |  10 
    6 |  10  |  8  |  4  |  10  | 10  |  9 

我需要拉出來是遊戲的最低得分5客隊回合的列表。在使用上表換句話說,我希望結果返回這些行:

game 4: 3 points 
game 2: 4 points 
game 1: 5 points 
game 4: 5 points 
game 2: 6 points 

我的問題是事實,我可能會具有相同的遊戲出現不止一次在列表中的遊戲2做上面的例子。我能寫出一個查詢,除了在重複遊戲中添加外。

我想我需要做一個自我連接,然後可以排序行?我在遇到困難時遇到了麻煩!非常感謝您的幫助!

+0

您的數據庫設計打破[第一範式(http://en.wikipedia.org/wiki/First_normal_form):你有「重複組」。將結果移到「round_results」表中[id,round_number,home,away,score]'會更好。考慮如果有20輪,你的表需要多少列。你會發現查詢也更容易寫。 – Bohemian

回答

2

你可以做這樣的事情

SELECT * FROM 
(
SELECT game_id, round1away AS away_score 
ORDER BY round1away 
LIMIT 5 
UNION 
SELECT game_id, round2away AS away_score 
ORDER BY round2away 
LIMIT 5 
)a 
ORDER BY away_score 
LIMIT 5 
+0

我會試一試並回復你。謝謝您的幫助! –

+0

不錯!謝謝! –