- ベストアンサー
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 以上です。初心者ですが、よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
union でつなげるてIDでgroup byしてcount(`ID`) するか、それぞれのテーブルを集計した結果を テンポラリーテーブルに流し込んで、 そのデータにたいしてgroup by & countする ということでいかがでしょうか?
その他の回答 (1)
- naochancom
- ベストアンサー率61% (41/67)
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; このような感じでしょうか?
お礼
お二人ともありがとうございました。 union all がありましたね。忘れてました。 Mysqlは、使えないもんだとばかりおもっていました。 助かりました。 ありがとうございました。