Подтвердить что ты не робот

Mysql UNION и GROUP BY

У меня есть 2 таблицы, которые мне нужно добавить вместе на дату и 2 значения.

Это дает мне список всей информации - отлично.

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

Теперь мне нужно ГРУППОВАТЬ информацию для ежедневных итогов из двух таблиц.

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

Хорошо, но если в каждой таблице есть что-то в ту же дату, я получаю следующее:

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

Как мне сгруппировать их в один день?

Если я добавлю GROUP BY в конце, я получаю сообщение об ошибке. Или это должно быть сделано с помощью JOIN?

4b9b3361

Ответ 1

Вы можете достичь этого, используя производную таблицу:

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

Я изменил UNION на UNION ALL, потому что объединение устранит дубликаты, найденные в обеих таблицах.