• ベストアンサー

GROUP BY句の集計について

はじめまして。 いろいろ調べて、何度試しても思うように 結果がでなかったので、投稿させて頂きました。 グループの集計をしてるのですが、 何個のグループがあるのかカウントしたいのです。 aaa bbb 110 a 110 b 111 c 112 d というDBに select aaa, bbb, count(*) as cnt from database GROUP BY aaa ORDER BY aaa だとそのグループ内の該当レコード数がカウントされてしまいます。 上記の例だとグループ数が“3”と結果を返すようにしたいのです。 では。宜しくお願いします。

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

  • ベストアンサー
回答No.4

たびたびすいません^^; mysql_fetch_array → mysql_num_rows に変更したらどうでしょうか?

shibaraku
質問者

お礼

またまた回答ありがとうございます! $rst = mysql_query($sql, $con); $tcnt = mysql_num_rows($rst); として、思うような結果が出ました。 本当にありがとうございました!

その他の回答 (3)

回答No.3

よく見たら、見当違いな回答をしてますね^^; ごめんなさい m(_ _)m

  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.2

インラインクエリーが使えるDBならこれで。 select count(*) as cnt from (select aaa, bbb from database GROUP BY aaa)

shibaraku
質問者

お礼

回答ありがとうございます。 残念ですがMYSQLなのでインラインは使えないようです。 説明不足ですいません。。

回答No.1

select aaa, bbb, count(*) as cnt from database GROUP BY aaa ORDER BY aaa このSELECT文だと [aaa] でグループ化をしているので、 [110],[111],[112] という3つのグループになります。

shibaraku
質問者

お礼

早速の回答ありがとうございます! 3つのグループには分けられるのですが、この文の後に $rst = mysql_query($sql, $con); $col = mysql_fetch_array($rst); $tcnt = $col['cnt']; と書いているのですが、 $tcntの値にそのグループに該当するレコード数が格納されてしまいます。 (上記の例では“2”が代入されます) そうではなくて、グループの数を出力したいのです。

関連するQ&A