会員制サイトphp+mysqlに関する質問です。

登録したユーザーの情報はテーブル(User)に記録されています。
テーブル(User)のフィールドは以下の4つです。
()内がフィールド名です。

会員コード(UserCD) text
パスワード(Pass) text
ニックネーム(Name) text
友達紹介人数(Friend) int 11

ユーザーが友達を紹介するたびに(Friend)の数値が1増えます。

紹介人数ランキングを作成したいのですが


Friendの数値が5番目に多い人のFriend数
Friendの数値が10番目に多い人のFriend数
Friendの数値が15番目に多い人のニックネーム(Name)
それぞれ個別に表示させられるようにしたいです。

前回の質問⇒http://q.hatena.ne.jp/1237627814
↑これとは異なり指定した順位の紹介人数やニックネームを表示させることが目的です。↑

また、紹介人数の総数
全レコードのFriendの数値合計を表し方も教えて頂きたいです。

ソースを直接書いて頂けると幸いです

よろしくお願い致します。



MySQL - 5.0.45

回答の条件
  • URL必須
  • 1人5回まで
  • 登録:2009/03/23 00:16:47
  • 終了:2009/03/30 00:20:03

回答(2件)

id:kn1967 No.1

kn1967回答回数2915ベストアンサー獲得回数3012009/03/23 13:52:50

ポイント35pt

(1)必要な箇所だけ取り出す方法の例

前回質問で

select * from User order by Friend desc limit 5;

という形のSQLを頂戴してますよね?


これは「並び替えて(ORDER BY)先頭から

必要分だけ(LIMIT)を抜き出す」という処置を行っています。

LIMITのオプションは1つなら”いくつ”ですが

2つ指定して”LIMIT どこから, いくつ”もできます。


LIMITの”どこから”は1レコード目がゼロとなりますので

それぞれのSQLは下記のようになります。

SELECT Friend FROM User LIMIT 4,1;
SELECT Friend FROM User LIMIT 9,1;
SELECT Name FROM User LIMIT 14,1;

MySQL :: MySQL 4.1 リファレンスマニュアル :: 6.4.1 SELECT 構文


(2)総数集計

SELECT sum(Friend) AS sFriend FROM User;

sum()が集計関数です。

sFriend というのは便宜上つけた仮のフィールド名です。


回答されたプログラムをそのまま使うのは結構ですが

理解せずに利用するとサーバなどにどのような悪影響を及ぼすかもしれません。

SQL入門などと書かれている本などを参照してスクリプトの内容を

ある程度理解してから使うことを強く推奨します。

id:xptree

回答ありがとうございます。

とても参考になりました。

また、紹介人数のリセット

全レコードのFriend数を0に戻したい場合はどのような方法があるでしょうか?

質問ばかりになってしまい申しわけありません。

ご存知でしたらご教授いただけると幸いです。

2009/03/23 18:31:51
id:kn1967 No.2

kn1967回答回数2915ベストアンサー獲得回数3012009/03/23 21:04:17

ポイント35pt

(3)リセットの例

全員のデータをゼロにしたい場合

UPDATE User SET Friend = 0

kn1967の人数だけをゼロにしたい場合は

UPDATE User SET Friend = 0 WHERE UserCD = 'kn1967'

kn1967とxptreeの人数だけをゼロにしたい場合は

UPDATE User SET Friend = 0 WHERE UserCD IN ('kn1967','xptree')

質問ばかりはまったくもって結構ですが、

ある程度まとめていただいたほうが双方ともに助かると思いますよ。

http://hatena.ne.jp/ダミー

  • id:rryu
    たとえばFriend数が皆同じだったら全員が1位だったりする訳で、10位の人が1人だとも、上から10番目の人が10位だとも限らない訳ですが、そういう場合はどういう扱いにするのでしょう。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません