• 締切済み

MySQLのCOUNTについて

PHPとMySQLを用いて投票システムを作成しています。 「好きな焼き鳥は?」という質問で、 「つくね・ねぎま・肝・皮」という回答があります。 また、下記が投票状況です。 id yaki 1 つくね 2 ねぎま 3 つくね 4 肝・つくね 5 肝・ねぎま 各項目の件数を取得する際に、 $yaki = mysql_query("SELECT * FROM nomi WHERE yaki LIKE '%ねぎま%'"); $yakitorinegi = mysql_num_rows($yaki); みたいなものを、4回分(計8行)記述している状態です。 こちらをスマートに少ない回数でSQL文を発行したいと色々調べているのですが、 どうにも前に進むことができません。 ご存知の方がいらっしゃいましたら、お知恵をお貸し下さい。 よろしくお願いします。

みんなの回答

回答No.4

まず、件数だけ知りたいなら SELECT *は無駄。 何でSQLのcount()関数を利用しない? それと変更されるのがwhere句だけならプレースホルダを何故利用しない? (mysql_query関数ではプレースホルダが使えないから書き直しになるけど)

すると、全ての回答が全文表示されます。
  • yamada_g
  • ベストアンサー率68% (258/374)
回答No.3

データの持ち方を変えたほうがいいとは思いますが、現状のデータでということであれば select count(case when yaki like '%つくね%' then 1 else null end) as つくね件数 ,count(case when yaki like '%ねぎま%' then 1 else null end) as ねぎま件数 ,count(case when yaki like '%肝%' then 1 else null end) as 肝件数 ,count(case when yaki like '%皮%' then 1 else null end) as 皮件数 from nomi というsqlでそれぞれの件数が1回で取れると思います。

すると、全ての回答が全文表示されます。
  • osamuy
  • ベストアンサー率42% (1231/2878)
回答No.2

多分、回答を id,yaki 1,つくね 2,ねぎま 3,つくね 4,肝 4,つくね 5,肝 5,ねぎま ――みたいに予め処理しやすい形にしてデータベースに登録しておくのが王道。 選択肢の個数に制限を持たせられるなら、選択肢1、選択肢2、……という列を持っておいて、0か1を入れておけば、SUMで個数をとるという手もあります。

すると、全ての回答が全文表示されます。
回答No.1

$yaki = mysql_query("SELECT COUNT(*) FROM nomi WHERE yaki LIKE '%ねぎま%'");

すると、全ての回答が全文表示されます。

関連するQ&A