1

屋内漕ぎ手が結果を記録できるフィットネス日誌を作成しています。興味深くやる気を起こさせるために、アチーブメント システムを実装しています。誰かが 24 週間以内に 90 回以上漕ぐと、その達成を達成するという達成が好きです。

MYSQLでこれを実装する方法について、誰かがヒントを持っていますか? ログブックの mysql テーブルは非常に簡単です: ID、ユーザー ID、日付 (タイムスタンプ) など (残りは重要ではないため省略します)

重要なのは、最初の行日付と最後の行日付が 24 週を超えてはならないということです。

4

4 に答える 4

1

あなたのアプリケーションから、最新の 24 週間が必要だと思います。

mysql では、これを次のように行います。

select lb.userid
from logbook lb
where datediff(now(), lb.date) >= 7*24
group by userid
having count(*) >= 90

任意の 24 週間の期間が必要な場合は、質問を変更できますか?

于 2012-07-21T17:58:52.797 に答える
0

毎日の達成者を入力するテーブル達成者を作成する必要があると思います。次のようなクエリを実行する定期的な (毎日、真夜中の直前) イベントを設定できます。

 delete from achievers;

 insert into achievers (
 select userid
 from logbook
 where  date < currenttimestamp and date > currenttimestamp - 24weeks
 group by userid 
 having count(*) >= 90
 )

mysql のイベント: http://dev.mysql.com/doc/refman/5.1/en/events-overview.html

于 2012-07-21T18:03:29.627 に答える
0

このクエリは、24 週間のユーザーの合計アクティビティのリストを提供します。

   select * from table groupby userid where  `date` BETWEEN DATE_SUB( CURDATE( ) ,INTERVAL 168 DAY ) AND CURDATE( ) having count(id) >= 90
于 2012-07-21T18:04:59.093 に答える
0

現在から 24 週間前までのユーザーの行数を数えるには、SQL クエリを実行するだけです。これは、非常に簡単に実行できるクエリです。

mysqlで何かを使用してdatediff、現在と 24 週間前の違いを取得することを検討してください。

これを行うスクリプトを設定したら、毎日または毎週実行するように cron ジョブを設定し、これを自動化します。

于 2012-07-21T17:57:53.420 に答える