アプリ版:「スタンプのみでお礼する」機能のリリースについて

環境:Mysql4.1.19

次のようなAテーブルとBテーブルのキーごとのレコードカウントを取得したいのですが、どのようなSQL文を作ればよいのでしょうか?

Aテーブル
ID Hiduke
005 2006-10-1
006 2006-10-3
001 2006-10-1
005 2006-10-6
005 2006-10-1

Bテーブル
ID Hiduke
006 2006-11-1
006 2006-11-3
001 2006-11-1
003 2006-11-6
005 2006-11-1

から、次のような結果を得たい。

005 4
006 3
001 2
003 1

以上です。初心者ですが、よろしくお願いします。

A 回答 (2件)

union でつなげるてIDでgroup byしてcount(`ID`)


するか、それぞれのテーブルを集計した結果を
テンポラリーテーブルに流し込んで、
そのデータにたいしてgroup by & countする
ということでいかがでしょうか?
    • good
    • 0

Mysql4.1なので、#1さんのunionクエリがよろしいかと思います。


その際には、union allを使用して結合しないと、結果が異なると思います。

結合して、カウントを取るか、
カウントして結合後、サマリするかになると思います。
例:
select ID,count(ID) from
(select ID from Aテーブル union all select ID from Bテーブル) TBL group by ID order by 2 desc;
または、
select ID,sum(cnt) from
(select ID,count(ID) as cnt from Aテーブル group by ID union all select ID,count(ID) as cnt from Bテーブル group by ID) TBL group by ID order by 2 desc;

このような感じでしょうか?
    • good
    • 0
この回答へのお礼

お二人ともありがとうございました。
union all がありましたね。忘れてました。
Mysqlは、使えないもんだとばかりおもっていました。

助かりました。
ありがとうございました。

お礼日時:2006/05/31 19:12

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