2012-09-19 20 views
13

Tengo 2 tablas que necesito sumar en base a una fecha y 2 valores.Mysql UNION y GROUP POR

Esto me da la lista de toda la información - bien.

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

Ahora necesito agrupar la información para los totales diarios de las dos tablas.

$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"; 

bien, pero si hay algo en la misma fecha en cada mesa me sale esto:

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

Cómo hacer yo grupo de los dos en el mismo día?

Si agrego GROUP BY al final, solo obtengo un error. ¿O debería hacerse con un JOIN?

Respuesta

15

se puede lograr esto usando tabla derivada:

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 

he cambiado un sindicato a todos porque la unión eliminará los duplicados que se encuentran en las dos tablas.