2012-09-19 12 views
13

Ich habe 2 Tabellen, die ich zusammen basierend auf einem Datum und 2 Werte hinzufügen muss.Mysql UNION und GROUP BY

Dies gibt mir die Liste aller Informationen - gut.

$query = (SELECT date, debit, credit , note FROM proj3_cash) 
UNION 
(SELECT settle, purch, sale, issue FROM proj3_trades) 
ORDER BY date"; 

Jetzt muss ich die Informationen für die täglichen Summen aus den beiden Tabellen gruppieren.

$query = "(SELECT date, SUM(debit), SUM(credit)FROM proj3_cash GROUP BY date) 
UNION 
(SELECT settle as date, SUM(purch) as debit, SUM(sale) as credit FROM proj3_trades GROUP BY date) 
ORDER BY date"; 

Gut, aber wenn es etwas am selben Tag in jeder Tabelle ist ich dieses:

date  SUM(debit) SUM(credit) 
-------------------------------------- 
2010-12-02 0.00   170.02 
2010-12-02 296449.91  233111.10 

Wie Gruppe ich die beiden in den selben Tag?

Wenn ich GROUP BY am Ende hinzufügen - ich bekomme nur einen Fehler. Oder sollte dies mit einem JOIN geschehen?

Antwort

15

Sie können diese unter Verwendung von abgeleiteten Tabelle erreichen:

SELECT date, SUM(debit), SUM(credit) 
FROM 
(
    SELECT date, debit, credit 
     FROM proj3_cash 
    UNION ALL 
    SELECT settle as date, 
      purch as debit, 
      sale as credit 
     FROM proj3_trades 
) derivedTable 
GROUP BY date 
ORDER BY date 

Ich habe UNION UNION geändert ALL weil Union Duplikate in beiden Tabellen gefunden beseitigt.