そこにはいくつかのランクポストがありますが、結果がページングされたときと、ランク付け基準(この場合はポイント)が前のユーザーと等しい場合は、 。私はいくつかの既存の例を試しましたが、どれも成功していませんでした。ページネーションとの合計に基づいてユーザーランクを取得
私は、カラム "id"を持つ "users"というテーブルを持っています。私はまた、 "user_id"と "量"の列を持つ "ポイント"と呼ばれるテーブルを持っています。
は私が必要:は
1)ポイントの重複合計を持つユーザーは、同じランクを持つように
ポイント表
user_id amount
1 10
2 20
1 5
3 20
3 -5
4 5
ランクがあるべき
rank user_id total
1 2 20
2 1 15
2 3 15
3 4 5
2.)1つのPAから順位を維持する必要があるクエリーでランクが集められ、結果のPHPでは収集されないようにする必要があります。
3.)ポイントテーブルに行があるユーザーだけでなく、すべてのユーザーを表示するユーザーがあり、最後に表示したいユーザーもいるためです。
今は自分のポイント順にユーザーをリストアップしていますが、ランク付けされていないのはランク付けされていないためです。
$getfanspoints = mysql_query("SELECT DISTINCT id,
(SELECT SUM(amount) AS points FROM points WHERE points.user_id = users.id) AS points
FROM users
ORDER BY points DESC LIMIT $offset, $fans_limit", $conn);
私はこれらのソリューションを読んだことがあります。
[ローランドのブログ] [1]
[SUMさんに基づいてランクを取得する方法] [2]
[MySQLは、ユーザーがランク取得] [3]
[ランクを取得する方法mysqlクエリを使用して] [4]
と私は今すぐ見つけることができないいくつかの他の人。
[EDIT]
私はypercubeの下の答えを使用していました。
ただ、サイドノート:あなたは、あなたがそれらを変更するよりも多くのランクを表示した場合、それはユーザーテーブル内のすべてのユーザーのためのポイントの合計を、あなたのテーブルを非正規化して保存を考える価値があるだろう。ユーザーがいくつかのポイントを取得した場合にのみ、ページのレンダリングごとにポイントを再計算するのではなく、ポイントを更新します。私はそれがユーザーとしての私のような状況で行うことは困難になると思う – bububaba
を獲得し、急速にポイントを失うが、ポイントは一種の「キュー内」もあり、彼らは実際のもののために彼らのポイントを使用することができたときにポイントが報わとされたときの間の遅延があります。また、それぞれのポイントは特定のアクションに結びついています。 pointsテーブルには、column page_id、module_id、post_id、group_id、item_id、other_usersも含まれます。彼らはさまざまな活動のポイントを獲得して失い、そのログは自分のプロフィールとユーザーダッシュボードに表示されます。説明するのは難しいですが、私はそれがうまくいくとは感じません。 – bowlerae