2017-04-26 9 views
1

Ich versuche, SUMed Daten aus zwei Tabellen auszuwählen. So sehen sie aus.Mysql Wählen Sie mit zwei Summen aus zwei Tabellen

Tabelle 1:

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

Table2:

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

Also die Abfrage sollte sie wie folgt zusammenfassen:

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

Ich habe schon versucht, diese und einige andere Anfragen, aber sie sind falsch.

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

Können Sie mir helfen, was ist die richtige Abfrage in diesem Fall? Vielen Dank.

Antwort

1

Verwenden UNION ALL und SUM-Aggregatfunktion:

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

Vielen Dank, Ihre Antwort ist richtiger. – Geobo

2

würde ich empfehlen union all und anschließend group by:

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

Dadurch wird sichergestellt, dass alle Produkte in der Ergebnismenge sind auch Produkte, die nur in einer Tabelle sind.

+0

ehrfürchtig. Es klappt. Vielen Dank. – Geobo