php - mysql 查询一个用户连续签到天数
过去多啦不再A梦
过去多啦不再A梦 2017-05-16 13:07:47
0
3
1091

我有个平台是有签到功能的,我需要判断这个用户连续在这个平台上签到多少天了 给他不同的积分。
例如今天是4月26号,从4月15号开始每天都签到了,那就是连续签到12天,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
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!