2011-01-20 8 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 

私は時間(ゲームシーズン)の一定期間の間、ほとんどの目標とトッププレーヤーを与えるクエリを書くことができますどのように思っていたことなどの多くのデータがありますか?

編集:データの構造が間違っているようです。これは申し訳ありません。すべての人が最初の答えを見ることができるように、私は前の表を残します。私はそれが本質的に同じものなので、新しい質問を開くことを望んでいませんでした。私の謝罪ハワード。 gameidtable1でIDによって参照の外部キーである

`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 

答えて

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

+0

私は答えを編集する –

+0

ああ、ありがとう!これは私が探していたものです。少しずつMySQLを学びます。私はまだ結合を理解するのにいくつかの困難を持っていますが、これはもう少し明確です。再度、感謝します! – Tek

関連する問題