• ベストアンサー

2つのテーブルでの合計取得

環境: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 以上です。初心者ですが、よろしくお願いします。

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

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

union でつなげるてIDでgroup byしてcount(`ID`) するか、それぞれのテーブルを集計した結果を テンポラリーテーブルに流し込んで、 そのデータにたいしてgroup by & countする ということでいかがでしょうか?

その他の回答 (1)

回答No.2

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; このような感じでしょうか?

w0a15455
質問者

お礼

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

関連するQ&A