2014-02-18 37 views
1

我有2個表有部分相同的列,我想在一個查詢合併:結合兩個表,並添加了結果

table 1 
|id |user |amount |date 
|1  |4  |1000 |2014-01-01 01:00:00 
|2  |1  |2000 |2014-01-01 01:00:00 
|3  |2  |1500 |2014-01-01 01:00:00 

table 2 
|id |user |amount |date    |flag 
|1  |4  |1000 |2014-01-01 01:00:00 |0 
|2  |3  |2000 |2014-01-01 01:00:00 |1 
|3  |5  |1500 |2014-01-01 01:00:00 |2 

我想列出兩個表具有共同的內容,但我想添加金額欄。因此,如果用戶在表1和表2中,甚至在多次都應該在結果中列出他1次,但數量應該加起來。

所以結果應該是以下幾點:

result 
|user |amount |date     
|4  |2000 |2014-01-01 01:00:00 <- note the 2000 here (1000+1000) 
|1  |2000 |2014-01-01 01:00:00 
|2  |1500 |2014-01-01 01:00:00 
|3  |2000 |2014-01-01 01:00:00 
|5  |1500 |2014-01-01 01:00:00 

我想查詢像

SELECT user, amount, date FROM (
    (SELECT user, amount, date FROM table1) 
UNION 
    (SELECT user, amount, date FROM table2) 
) t1 

但這並不加起來的金額值和入口得到多次列出。 如果我使用GROUP BY,它只列出條目1次,但條目得到削減的意義量也沒有總結。使用SUM,它只添加所有條目並顯示1條目,但我需要將所有條目與數量列總和相加1次。

回答

2

嘗試你應該不使用組此組使用集合函數通過將只得到一個行

SELECT t1.user, SUM(t1.amount), t1.date FROM (
    (SELECT user, amount, date FROM table1) 
UNION ALL 
    (SELECT user, amount, date FROM table2) 
) t1 

GROUP BY t1.user 

GROUP BY (Aggregate) Functions

+1

大和快速的回​​答,非常感謝! – maddo7