php - mysql ユーザーの連続チェックイン日数をクエリする
过去多啦不再A梦
过去多啦不再A梦 2017-05-16 13:07:47
0
3
1109

チェックイン機能のあるプラットフォームを持っています。このユーザーがこのプラットフォームに連続して何日間チェックインしたかを判断し、さまざまなポイントを与える必要があります。
たとえば、今日は 4 月 26 日ですが、4 月 15 日から毎日サインインしています。つまり、4 月 13 日にはサインインしましたが、4 月 14 日にはサインインしませんでした。
mysql ステートメントの書き方

过去多啦不再A梦
过去多啦不再A梦

全員に返信(3)
洪涛

通常、連続サインインの日数が保存されない場合、以前に行った方法の 1 つは、サインインをタイムスタンプとともに保存してから、サインインのタイムスタンプを取得することです。 1 か月分を取得し (サインインがいっぱいになった月の場合は、前月のものを取得します)、PHP で日数をループして計算します。その後、この方法では時間がかかるため、チェックイン日を個別に記録しました

いいねを押す +0
大家讲道理

データベース設計の問題
連続した日数をカウントする必要があるため、毎日 1 つの項目を記録することは不可能です (銀行が任意の日数分のユーザーの残高を記録していることを想像してください)
会計方法は年次累積アルゴリズムと呼ばれます。つまり、ある時点を別の時点まで記録します。ある時点の残高は変更されません (継続的)。
テーブルのデザインは、おおよそ次のとおりです。

終了時間 - 開始時間 = 日数。ポイントの変換は税金と同じで、ボーナスを計算するだけです。

いいねを押す +0
大家讲道理

ビジネス ルールでは、連続 x 日間に付与されるポイント数に上限を設ける必要があります。たとえば、連続 20 日以上の場合に付与されるポイント数はいくらですか。

次に、この x を覚えておきましょう。db select * from tb where uid = 10086 order by dt desc limit x

その後、プログラムの連続日数の最大値を判断し、対応するスコアを加算します。

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート