人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

会員制サイト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

●質問者: xptree
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:FRIEND MySQL name PHP USER
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● kn1967
●35ポイント

(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入門などと書かれている本などを参照してスクリプトの内容を

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

◎質問者からの返答

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

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

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

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

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

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


2 ● kn1967
●35ポイント

(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/ダミー

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ