私は基本的なカルマ/リプレースシステムを持っており、ユーザーはそのアクティビティ(質問、回答など)に基づいてユーザーを賞賛します。彼らのポイントに基づいてユーザーのランク(タイトル)を持っていたい。ランクが異なると、制限と権限が異なります。ダイナミックなユーザーランク
ランクテーブル
id rankname points questions_per_day
1 beginner 150 10
2 advanced 300 30
私は下限と上限を持っている必要がある場合はわからないんだけど、簡単のために、私はつまり、ユーザー以下、最大のポイントの上限にのみ残っています150は初心者で、300歳以下の人は「上級者」です。
たとえば、157ポイントのBobには、彼のユーザー名で表示される「advanced」タグがあります。
ユーザーのランク/タイトルを決定して表示するにはどうすればよいですか?各行をループして値を比較しますか?
これを、このように計算されたランクを持つ何千人ものユーザーに拡大するとどのような問題が発生する可能性がありますか?確かに、ユーザーのランクが要求されるたびにクエリとループを実行するシステムに課税されますか?
これは私が尋ねたものではありません。私はすでにこの方法でユーザースコアを管理しています。私はテーブルに基づいて彼らのランク/タイトルを決定する必要があります。 –
さて、あなたの質問の第2部分に答えるために、私の答えに 'score'を' rank'で置き換えてください。 1秒で追加をポストします。 – GolezTrol
スコアに基づいてランクIDを計算するためのクエリを追加しました。このリアルタイムを使用するか、好きなようにユーザーテーブルでキャッシュすることができます。このIDを使用して、ユーザーページに表示する正しいランク名を取得することができます。このクエリをリアルタイムで使用すると(何千ものユーザがいない限り大丈夫でしょう)、すぐに 'r.id'を' r.rankname'に置き換える方がよいでしょう。 2番目のクエリを実行する必要があります。 – GolezTrol