2011-01-20 15 views
1

我需要用下面的查詢有助於在一定期限內最大的價值,我會後的表的例子。計數的時間

 player | goals | gamedate 

playername1 | 1 | 2011-01-01 
playername2 | 2 | 2011-01-01 
playername1 | 1 | 2011-01-02 
playername3 | 1 | 2011-01-01 
playername1 | 2 | 2011-01-03 
playername1 | 1 | 2011-01-01 
playername3 | 1 | 2011-01-01 
playername2 | 2 | 2011-01-01 
playername1 | 1 | 2011-01-04 

有很多更像數據我想知道我怎麼可以編寫一個查詢,將給予進球最多的頂級球員的時間(比賽季)一定時期之間?

編輯:看來我是在數據結構化的方式錯了。我很抱歉。我將離開前面的表格,以便每個人都能看到第一個答案。我不想開一個新的問題,因爲它本質上是一回事。我的道歉Haim。

`table1` 
    id | gamedate 

1 | 2011-01-01 
2 | 2011-01-02 
3 | 2011-01-03 
4 | 2011-01-04 
5 | 2011-01-05 


`table2` 
id | gameid |  player | goals 

1 | 1  | playername1 | 1 
2 | 1  | playername2 | 2 
3 | 2  | playername1 | 1 
4 | 1  | playername3 | 1 
5 | 3  | playername1 | 2 
6 | 4  | playername1 | 1 
7 | 2  | playername3 | 1 
8 | 3  | playername2 | 2 
9 | 5  | playername1 | 1 

哪裏gameid是可以被標識在table1引用的外鍵。

回答

1

替換您想要檢查的日期, 並將限制(在該示例中爲5)設置爲您想要的玩家數量。

SELECT player , sum(goals) AS top_scores FROM mytable 
WHERE gamedate BETWEEN '2011-01-02' AND '2011-01-07' 
GROUP BY player ORDER BY top_scores DESC LIMIT 5 

EDIT(根據問題的編輯,你需要的是添加一個連接):

SELECT player , sum(goals) AS top_scores FROM table2 t2 
LEFT JOIN table1 t1 ON t1.id = t2.gameid 
WHERE gamedate BETWEEN '2011-01-02' AND '2011-01-07' 
GROUP BY player ORDER BY top_scores DESC LIMIT 5 
+0

嗨哈伊姆。我編輯了我的問題,並希望你原諒我粗心的錯誤。 – Tek 2011-01-20 11:28:20