LoginSignup
17

More than 5 years have passed since last update.

MySQLで投票を集計してランキングを降順で取得する

Last updated at Posted at 2013-08-24

タイトルの通り。

例: ポケモン人気投票

voteテーブルの内容

実際は pokemon_id みたいに管理してると思うけど分かりやすさのために今回は名前そのままにしました

id pokemon
1 コイル
2 コイル
3 ピカチュウ
4 コイル
5 ピカチュウ
6 コイル
7 シェイミ
8 コイル
9 ギラティナ

欲しい結果

array(4) {
  [0]=>
  object(stdClass)#1 (2) {
    ["pokemon"]=>
    string(9) "コイル"
    ["sum"]=>
    string(1) "5"
  }
  [1]=>
  object(stdClass)#2 (2) {
    ["pokemon"]=>
    string(15) "ピカチュウ"
    ["sum"]=>
    string(1) "2"
  }
  [2]=>
  object(stdClass)#3 (2) {
    ["pokemon"]=>
    string(12) "シェイミ"
    ["sum"]=>
    string(1) "1"
  }
  [3]=>
  object(stdClass)#4 (2) {
    ["pokemon"]=>
    string(15) "ギラティナ"
    ["sum"]=>
    string(1) "1"
  }
}

SQL文

SUM(1) が決め手。

SELECT `pokemon`, SUM(1) AS `sum`
FROM `vote`
GROUP BY `pokemon`
ORDER BY `sum` DESC

PHPでどう扱うかに関しては下記を参照してください。

Qiita - PHPでデータベースに接続するときのまとめ

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
17