2017-04-26 81 views
1

我试图从两个表中选择SUMed数据。 这是他们的样子。Mysql从两个表中选择两个SUM

表1:

products | revenue| 
------------------| 
product1 | 10  | 
product2 | 20  | 
product1 | 20  | 

表2:

products | revenue| 
------------------| 
product1 | 40  | 
product2 | 30  | 
product2 | 40  | 

所以查询应该总结他们是这样的:

products | revenue| 
------------------| 
product1 | 70  | 
product2 | 90  | 

我已经试过这和其他一些疑问,但他们不正确。

SELECT Table1.products, Table1.SUM(`revenue`), Table2.SUM(`revenue`) 
FROM Table1 
JOIN Table2 
ON  Table1.products = Table2.products 
group by Table1.products; 

你能帮帮我,在这种情况下什么是正确的查询?谢谢。

回答

1

使用UNION ALL和SUM聚合函数:

SELECT products , SUM(revenue) revenue 
FROM 
(
    SELECT products , revenue 
    FROM table1 
    UNION ALL 
    SELECT products , revenue 
    FROM table2 
) A 
GROUP BY products 
+0

谢谢你,你的回答更正确。 – Geobo

2

我会建议使用union all然后group by

select product, sum(revenue) 
from ((select product, revenue from table1) union all 
     (select product, revenue from table2) 
    ) tt 
group by product; 

这将确保所有的产品都在结果集中,即使是只在一个表中的产品。

+0

真棒。有用。谢谢。 – Geobo