質問: 複数のテーブルから値を合計出力するsqlについて 複数のテーブルから値を合計出力するsqlについて 以下の様な3つのテーブルがあり、それぞれのテーブルから値を合計した結果を取得したいと思っております。 この場合のsql文をご教授いただけないでしょうか? 拙い説明でお分かりに難いかと思いますが、何卒、宜しくお願いします。 ●テーブル t1(テーブル1) id, 会員id, 日付, 金額 t2(テーブル2) id, 会員id, 日付, 金額 t3(テーブル3) id, 会員id, 日付, 金額 ●期待する結果 上記、テーブル内の会員id、日付が同じものの金額を合計して取得。(1行で出力) いずれかのテーブルに「会員id」が一つしか存在しない場合も、「日付」、「金額」を取得して「合計金額」に反映。 もし、各テーブル、レコードの「金額」が「0」または「null」の場合は「0」として処理する。 ●期待出力結果イメージ 会員id | 日付 | 合計金額 | -------------------------------- m001 | 2011/07/20 | 1500 | -------------------------------- m001 | 2011/06/10 | 2000 | -------------------------------- m002 | 2011/06/05 | 1000 | -------------------------------- m003 | 2011/05/25 | 0 | -------------------------------- m001 | 2011/03/05 | 3000 | ※「合計金額」は、「t1(テーブル1)」~「t3(テーブル3)」の中に含まれていた金額の合計。
回答: mysqlのバージョンにもよりますが select 会員id, 日付, sum(金額) 合計金額 from ( select 会員id, 日付, 金額 from t1 union all select 会員id, 日付, 金額 from t2 union all select 会員id, 日付, 金額 from t3 ) group by 会員id, 日付;