[PHP-users 23123]MYSQLからのデータ取得について

kohei-w kohei-w @ wd6.so-net.ne.jp
2004年 8月 29日 (日) 00:19:55 JST


Kohei-wと申します。

日記サイトを作っていまして、「誰が多く投稿しているかランキング」のような
ものを作っているのですが、いまいち効率的なやり方が分からずに悩んでおります。
■実現したい表現
1位 Aさん 80件
2位 Bさん 60件
   ↓
100位 Cさん 2件 //大体ベスト100位を想定。
以上のような結果を求めたいのです。
データベースは、下記のように持っております。
----------------------------------------------
|ユーザー名|日記タイトル|日記文章|日付|
----------------------------------------------
単純にひとりのユーザーの件数を求めるのであれば、
SQLで、WHERE user = 'Aさん' でいいと思うのですが、
これをいったん配列に入れて、重複を取り除いた後、
ユニークなユーザー数分ループして、
WHERE user = '○○さん'とSQLにアクセスすれば
求められると思うのですが、これが最適なのでしょうか。

それとも一端、配列に全部入れて、
For($i=0;$i<総件数:$i++){
$row = mysql_fetch_array($result);
If($row["user"] == 'Aさん'){
	$hit_point['Aさん']++;
}else If($row["user"] == 'Bさん'){・・・
とやるのがいいのでしょうか。
これも効率が悪いような気がするのですが、

皆様はこのような配列から、Aさん○件、Bさん○件というような
ユーザー名とそのユーザーの行数を連続的・複合的に求める場合には
どのようにするのが効率的だと思われますでしょうか。
よろしくお願い致します。
Kohei-w

PHP 4.2.4
MYSQL 3.23.58
Apache 1.3.27




PHP-users メーリングリストの案内