こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

複数のテーブルから値を合計出力する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)」の中に含まれていた金額の合計。

投稿日時 - 2011-06-30 21:01:33

QNo.6845763

困ってます

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

UNIONでt1,t2,t3でテーブルを1個に結合して
Group ByすればOK?

「金額」が「0」または「null」の場合は「0」はNVLで対応


Select 会員ID, 日付, NVL(SUM(金額),0) AS 合計金額 From (
Select 会員ID, 日付, 金額 From t1
UNION ALL
Select 会員ID, 日付, 金額 From t2
UNION ALL
Select 会員ID, 日付, 金額 From t3
)
Group By 会員ID, 日付

投稿日時 - 2011-06-30 21:58:55

お礼

早々のご回答有難う御座います!!
試したところ、上手くいきました!!!
SQLの知識(だけではないですが(汗))が乏しく、全く思いつきませんでした。
本当に有難う御座いました。

投稿日時 - 2011-06-30 22:37:24

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.3

mysql はインラインビューに明示的に別名をつけないといけないようですね。

SELECT t.会員ID, t.日付, SUM(t.金額) 合計金額
FROM
( SELECT 会員ID, 日付, 金額 FROM t1
UNION ALL
SELECT 会員ID, 日付, 金額 FROM t2
UNION ALL
SELECT 会員ID, 日付, 金額 FROM t3 ) t
GROUP BY 会員ID, 日付;

投稿日時 - 2011-06-30 22:08:53

お礼

度々のご教授、有難う御座います!!!
また、何かあれば投稿させていただきます。
ご面倒お掛けいたしました。

投稿日時 - 2011-06-30 22:46:51

ANo.2

mysqlのバージョンにもよりますが
SELECT 会員ID, 日付, SUM(金額) 合計金額
FROM
( SELECT 会員ID, 日付, 金額 FROM t1
UNION ALL
SELECT 会員ID, 日付, 金額 FROM t2
UNION ALL
SELECT 会員ID, 日付, 金額 FROM t3 )
GROUP BY 会員ID, 日付;

投稿日時 - 2011-06-30 22:04:49

お礼

早々のご教授、ご親切に有難う御座います!!
nora1962のご回答も、参考にさせていただきます。

投稿日時 - 2011-06-30 22:44:28

あなたにオススメの質問