アプリ版:「スタンプのみでお礼する」機能のリリースについて

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

よろしくお願いします

A 回答 (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にも分析関数が導入されればもっと簡単に求められるようになると思われます。

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

この回答への補足

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

補足日時:2013/06/16 15:59
    • good
    • 0
この回答へのお礼

お答え頂きありがとうございます

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'];

お礼日時:2013/06/16 14:41

> 実際にid15の順位を取得しようとするとエラーが出てだめでしたorz


> FROM WHERE id=15 vote a

FROM句とWHERE句が混ざってますよ。
↓では?

FROM vote a WHERE id=15
    • good
    • 0
この回答へのお礼

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

お礼日時:2013/06/16 15:58

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

関連するカテゴリからQ&Aを探す