電子書籍の厳選無料作品が豊富!

■環境
・PHP+MySQL

■質問
・「順位データ」の持ち方について教えてください
・「順位データ」はデータベース側で保存するものでしょうか?
・あるいはPHPで都度処理するのでしょうか?
・ケースバイケース?

■データベース側で保存する場合
・「通常データ」だと、該当レコードを「挿入」もしくは「更新」すればそれで済みますが、「順位データ」だと1件データを「挿入」もしくは「更新」するだけで、全レコードに影響を及ぼす可能性があります
・この場合、1レコードでもデータを変更したら、全レコードに変更処理をかけるしかないのでしょうか?

A 回答 (2件)

MySQL以外のメジャーなRDBMSの場合、RANK() OVER()関数が使えます。


なので、テーブル側に持たず、PHP側で処理を行うのでなく、サーバー側のSQL処理に任せるのがほとんどだと思います。

MySQLの場合はRANK関数を実装していないので、ちょっと面倒ですが、NULLがない項目であればユーザー変数を使ってRANK関数を模倣することは可能です。
少し分かりにくいかもしれませんが参考にしてください。
http://note.chiebukuro.yahoo.co.jp/detail/n181988
    • good
    • 0
この回答へのお礼

回答ありがとうございました。
RANK()関数の存在、初めて知りました。
MySQLでは利用できないのが残念ですが、参考になりましたー

お礼日時:2013/06/27 10:22

ケースバイケースですね。



リアルタイムの順位を求めるなら、DBから条件に沿った並べ替えを行ったデータを取得してPHPで処理してやればいいと思います。

週間ランキングのように決まった日に集計を行ってその結果を表示したいのなら、cron等で定期的に集計バッチを実行して集計結果をランキングテーブル等に保存し、その集計結果を表示するといったやり方の方がいいと思います。
    • good
    • 0
この回答へのお礼

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

順位算出する頻度まで考慮してませんでした。
参考になりましたー

お礼日時:2013/06/27 10:24

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!