これは私のための本当に頭の傷です。基本的に私は3つのMySQLテーブルを持っていて、誰かのスコアを総括的に記録しています(ゲームのために)。常に新しいスコアを入力できます。本質的に私が把握する必要があるのは、プレイヤーが過去1週間からスコアを上げたことです(これは、週が始まる前とその後にスコアが必要です)。ここに私のテーブルレイアウトは次のとおりです。IDに関連する日付と価値を比較します
USER REQUEST (ASSOCIATIVE TABLE) SCORE
+----------+ +-----------------------------------------+ +--------------------+
| id (int) | | id | user_id | date (UNIX TS) | | request_id | score |
+----------+ +-----------------------------------------+ +--------------------+
| 3 | | 1 | 3 | before week | | 1 | 10 |
| 4 | | 2 | 3 | after week | | 2 | 20 |
| 5 | | 3 | 4 | before week | | 3 | 5 |
+----------+ | 4 | 5 | after week | | 4 | 15 |
+-----------------------------------------+ +--------------------+
ので、基本的に、これらのテーブルから、私は彼がこの最後の週に彼のスコアを向上させただけだから返される3のIDを持つユーザーを持っていると思います。あなたの助けのための
SELECT user.id AS user_id, score, count(*) AS n
FROM user
LEFT JOIN request ON request.user_id = user.id
LEFT JOIN score ON score.request_id = request.id WHERE request.date > (WEEK UNIX TS)
GROUP BY user_id HAVING n > 1
ORDER BY request.date DESC
感謝を:私は来ているが、私は本当に前進トラブルを抱えていますどこ
はこれまでのところ、これは! :)
ユーザーは、現在の(または前の)週に複数のリクエスト(したがってスコア)を持つことができますか? –
はい、その場合は、その週の最大得点を使用する必要があります。 – flicker