• ベストアンサー

順位の取得

idの順位を取得する方法はありますか? voteが一番多い順にソートして指定したidの順位を取得したいです もしくは、指定したidが3番以内に入っているかどうか調べたいです テーブル id vote 1 5 2 6 3 3 4 1 5 12 ソートした後のテーブルのイメージ id3の順位を指定した場合、4番目なので4を取得したいです id vote 5 12 2 6 1 5 3 3 4 1 よろしくお願いします

質問者が選んだベストアンサー

  • ベストアンサー
  • root139
  • ベストアンサー率60% (488/809)
回答No.1

順位を取得するには自己結合して『自分より順位が上の行数+1』を求めればよいです。 例) ---------------------------------- SELECT *, (SELECT COUNT(*) FROM t_vote b WHERE a.vote < b.vote) + 1 AS rank FROM t_vote a ORDER BY vote DESC ------------------------------------- ちなみに、MySQLにも分析関数が導入されればもっと簡単に求められるようになると思われます。

参考URL:
http://codezine.jp/article/detail/460?p=2
flash0
質問者

お礼

お答え頂きありがとうございます phpmyadminで実行したら順位順にソートはできました 指定したidの順位を取得する方法はありますか? 実際にid15の順位を取得しようとするとエラーが出てだめでしたorz $rec = mysql_query('SELECT *, (SELECT COUNT(*) FROM vote b WHERE a.vote < b.vote) + 1 AS rank FROM WHERE id=15 vote a ORDER BY vote DESC ); $flg = mysql_fetch_assoc($rec); print $flg['id'];

flash0
質問者

補足

追記 なんとかなりました!ありがとうございました(_ _)

その他の回答 (1)

  • root139
  • ベストアンサー率60% (488/809)
回答No.2

> 実際にid15の順位を取得しようとするとエラーが出てだめでしたorz > FROM WHERE id=15 vote a FROM句とWHERE句が混ざってますよ。 ↓では? FROM vote a WHERE id=15

flash0
質問者

お礼

すいません!混ざってしまいました ご指摘ありがとうございます(_ _) なんとかうまくいきました

関連するQ&A