検索

ホームページ  >  に質問  >  本文

php - mysql ユーザーの連続チェックイン日数をクエリする

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

过去多啦不再A梦过去多啦不再A梦2749日前1110

全員に返信(3)返信します

  • PHP中文网

    PHP中文网2017-05-16 13:09:47

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

    返事
    0
  • 大家讲道理

    大家讲道理2017-05-16 13:09:47

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

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

    返事
    0
  • 大家讲道理

    大家讲道理2017-05-16 13:09:47

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

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

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

    返事
    0
  • キャンセル返事