- ベストアンサー
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”と結果を返すようにしたいのです。 では。宜しくお願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
たびたびすいません^^; mysql_fetch_array → mysql_num_rows に変更したらどうでしょうか?
その他の回答 (3)
- _satoshi_
- ベストアンサー率44% (4/9)
よく見たら、見当違いな回答をしてますね^^; ごめんなさい m(_ _)m
- taka_tetsu
- ベストアンサー率65% (1020/1553)
インラインクエリーが使えるDBならこれで。 select count(*) as cnt from (select aaa, bbb from database GROUP BY aaa)
お礼
回答ありがとうございます。 残念ですがMYSQLなのでインラインは使えないようです。 説明不足ですいません。。
- _satoshi_
- ベストアンサー率44% (4/9)
select aaa, bbb, count(*) as cnt from database GROUP BY aaa ORDER BY aaa このSELECT文だと [aaa] でグループ化をしているので、 [110],[111],[112] という3つのグループになります。
お礼
早速の回答ありがとうございます! 3つのグループには分けられるのですが、この文の後に $rst = mysql_query($sql, $con); $col = mysql_fetch_array($rst); $tcnt = $col['cnt']; と書いているのですが、 $tcntの値にそのグループに該当するレコード数が格納されてしまいます。 (上記の例では“2”が代入されます) そうではなくて、グループの数を出力したいのです。
お礼
またまた回答ありがとうございます! $rst = mysql_query($sql, $con); $tcnt = mysql_num_rows($rst); として、思うような結果が出ました。 本当にありがとうございました!