- ベストアンサー
順位の取得
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 よろしくお願いします
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
順位を取得するには自己結合して『自分より順位が上の行数+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にも分析関数が導入されればもっと簡単に求められるようになると思われます。
その他の回答 (1)
- root139
- ベストアンサー率60% (488/809)
回答No.2
> 実際にid15の順位を取得しようとするとエラーが出てだめでしたorz > FROM WHERE id=15 vote a FROM句とWHERE句が混ざってますよ。 ↓では? FROM vote a WHERE id=15
質問者
お礼
すいません!混ざってしまいました ご指摘ありがとうございます(_ _) なんとかうまくいきました
お礼
お答え頂きありがとうございます 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'];
補足
追記 なんとかなりました!ありがとうございました(_ _)