mysql: Добавяне на Sum() на 2 различни таблици

Има две отделни таблици с множество записи (редове), които трябва да съберем (сумираме), за да образуваме една стойност.

Заявката по-долу ми дава 2 различни стойности при връщане, търся просто да добавя 2-те заедно, за да образувам 1 стойност. Оценява се всякаква помощ.

select sum(t1.netAmount) 
      from tbl_one t1 where userid = 4033 and date > '2014-09-01'
    Union All
    select sum(t2.netAmount) 
      from tbl_two t2 where userid = 4033 and date > '2014-09-01'

Структури на таблицата по-долу

tbl_one
userid   |   netAmount   |   date
---------------------------------
4033     |   20          | 2014-09-02 12:00:00
4033     |   -20         | 2014-09-02 12:01:00
4033     |   40          | 2014-09-02 12:02:00


tbl_two
userid   |   netAmount   |   date
---------------------------------
4033     |   05          | 2014-09-03 12:00:00
4033     |   -100        | 2014-09-03 12:01:00
4033     |   12          | 2014-09-03 12:02:00

Получаването на истинската сума в двете таблици за 4033 ще доведе до -43 (40 + -83)


person timw07    schedule 01.10.2014    source източник


Отговори (1)


Не знам как изглежда вашата база данни, така че това не е тествано, но нещо подобно трябва да работи:

SELECT SUM(netAmount) FROM (
  SELECT netAmount FROM tbl_one WHERE userid = 4033 AND `date` > "2014-09-01"
  UNION ALL
  SELECT netAmount FROM tbl_two WHERE userid = 4033 AND `date` > "2014-09-01"
) x
person miken32    schedule 01.10.2014
comment
Това дава #1248 - Всяка извлечена таблица трябва да има свой собствен псевдоним. Ще добавя още подробности за структурата на таблицата в първоначалния въпрос. - person timw07; 02.10.2014
comment
Помните ли това х накрая? - person miken32; 02.10.2014
comment
SELECT sum(netAmount) FROM ( SELECT sum(netAmount) as netAmount FROM tbl_one WHERE userid = 4033 AND date › 2014-09-01 UNION ALL SELECT sum(netAmount) as netAmount FROM tbl_two WHERE userid = 4033 AND date › 2014-09- 01) x - person timw07; 02.10.2014