2017-03-08 12 views
0

私は解決しようとしていますが、私の周りに私の頭を包み込むことはできません非常に単純な問題があります。3つのmysqlテーブル内の従業員の値を追加

私は

t1.id, t1.cust_id, t1.name, t1.value 
t2.id, t2.cust_id, t2.name, t2.value 
t3.id, t3.cust_id, t3.name, t3.value 

お客様は、いくつかのテーブルではなく、他に表示され、同一構造の3つのテーブルを持っています。それぞれの「価値」レコードはドル額です。

mySQLで3つのテーブルの各顧客が行ったすべての購入を合計する集計テーブルを作成するクエリを実行したいとします。私はJOINをして、いくつかのクエリを試みたが、満足のいく結果が得られました

Name  Customer ID  T1  T2 T3 

    Joe   88888  12.45 45.90 2.34 
    Ted   99999   8.90 3.45 null 
    Sue   12123   9.45 2.45 null 

私の所望の出力は次のようになります。

ありがとうございました!

答えて

1

union allを使用して、3つのテーブルの行を結合し、集計を使用します。

select cust_id,name,sum(t1val),sum(t2val),sum(t3val) 
from (
select id, cust_id, name, value as t1val, null as t2val, null as t3val from t1 
union all 
select id, cust_id, name, null, value, null from t2 
union all 
select id, cust_id, name, null, null ,value from t3 
) t 
group by cust_id,name 
+0

ニース!ありがとう、これはうまくいくようです。 – tomish

0

あなたは例えば、SELECTでそれを行うことができます。:

SELECT (
     (SELECT COALESCE(SUM(value),0) FROM t1 WHERE cust_id = 100) 
     + 
     (SELECT COALESCE(SUM(value),0) FROM t2 WHERE cust_id = 100) 
     + 
     (SELECT COALESCE(SUM(value),0) FROM t3 WHERE cust_id = 100) 
    ) as total; 

はここSQL Fiddleです。

+0

実際の顧客IDで疑問符を置き換える必要がありますが、答えをありがとう?テーブル1,2および3に対するサブクエリかもしれないと思いますか? – tomish

+0

@tomish例を使ってクエリを更新しました。はい、顧客IDを入れる必要があります。これはサブクエリではなく単純な選択クエリです。 –

+0

ありがとうDarshan! – tomish

関連する問題