プロが教えるわが家の防犯対策術!

はじめまして。
いろいろ調べて、何度試しても思うように
結果がでなかったので、投稿させて頂きました。

グループの集計をしてるのですが、
何個のグループがあるのかカウントしたいのです。

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”と結果を返すようにしたいのです。

では。宜しくお願いします。

A 回答 (4件)

select aaa, bbb, count(*) as cnt from database GROUP BY aaa ORDER BY aaa



このSELECT文だと [aaa] でグループ化をしているので、
[110],[111],[112]
という3つのグループになります。
    • good
    • 0
この回答へのお礼

早速の回答ありがとうございます!
3つのグループには分けられるのですが、この文の後に

$rst = mysql_query($sql, $con);
$col = mysql_fetch_array($rst);
$tcnt = $col['cnt'];

と書いているのですが、
$tcntの値にそのグループに該当するレコード数が格納されてしまいます。
(上記の例では“2”が代入されます)

そうではなくて、グループの数を出力したいのです。

お礼日時:2005/05/16 11:58

インラインクエリーが使えるDBならこれで。



select count(*) as cnt from
(select aaa, bbb from database GROUP BY aaa)
    • good
    • 0
この回答へのお礼

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

お礼日時:2005/05/16 16:57

よく見たら、見当違いな回答をしてますね^^;


ごめんなさい m(_ _)m
    • good
    • 0

たびたびすいません^^;



mysql_fetch_array → mysql_num_rows

に変更したらどうでしょうか?
    • good
    • 0
この回答へのお礼

またまた回答ありがとうございます!

$rst = mysql_query($sql, $con);
$tcnt = mysql_num_rows($rst);

として、思うような結果が出ました。
本当にありがとうございました!

お礼日時:2005/05/16 17:06

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