2012-05-24 4 views
0

Я пытался найти правильный способ суммировать 2 строки из 2 разных таблиц.mysql выбрать сумму 2 строки из разных таблиц

Я могу легко определить строки, я хочу, чтобы подвести с помощью этих двух запросов:

select * 
from vui_trading_review_form_client 
where month = '201202' and client_id='TOTALS'; 

+--------+------------+-----------+-----------------+-----------------+-----------------+----------------+----------+ 
| month | dt_end  | client_id | amt_balance_GBP | amt_balance_EUR | amt_balance_USD | dt_working_day | order_no | 
+--------+------------+-----------+-----------------+-----------------+-----------------+----------------+----------+ 
| 201202 | 2012-02-29 | TOTALS |   2 |    3 |    4 | 2012-02-29  |  2 | 
+--------+------------+-----------+-----------------+-----------------+-----------------+----------------+----------+ 


select * 
from vui_trading_review_form_bank 
where month = '201202' and provider='TOTALS'; 

+--------+------------+----------+-----------------+-----------------+-----------------+----------+ 
| month | dt_end  | provider | amt_balance_GBP | amt_balance_EUR | amt_balance_USD | order_no | 
+--------+------------+----------+-----------------+-----------------+-----------------+----------+ 
| 201202 | 2012-02-29 | TOTALS |    1 |    1 |    1 |  3 | 
+--------+------------+----------+-----------------+-----------------+-----------------+----------+ 

То, что я хотел бы достичь, это таблица, которая выглядит следующим образом

+-----------------+-----------------+-----------------+ 
| amt_balance_GBP | amt_balance_EUR | amt_balance_USD | 
+-----------------+-----------------+-----------------+ 
| 1    |   2  |    3 | 
+-----------------+-----------------+-----------------+ 

первые 3 итоги за вычетом вторых трех итогов.

Я пробовал присоединиться, но я действительно пытаюсь получить правильный результат.

Любые предложения были бы весьма полезными.

+0

Ваш два запросы из одной таблицы. Я предполагаю, что это ошибка? Кроме того, вы добавляете или вычитаете эти значения (выглядит как вычитание)? –

+0

Привет, Джон, извините, это ошибка. Я вычитаю –

+0

имя двух таблиц одинаково? 'Vui_trading_review_form_client'? –

ответ

1

Попробуйте это:

SELECT (a.amt_balance_GBP - b.amt_balance_GBP) Total_GBP, 
     (a.amt_balance_EUR - b.amt_balance_EUR) Total_EUR, 
     (a.amt_balance_USD - b.amt_balance_USD) Total_USD 
FROM vui_trading_review_form_client a INNER JOIN vui_trading_review_form_bank b 
     on (a.Client_ID = b. provider) AND 
      (a.Month = b.Month) 
WHERE a.month = '201202' and b.provider='TOTALS'; 

или если он не соответствует вашим потребностям, попробуйте использовать LEFT JOIN

SELECT (a.amt_balance_GBP - COALESCE(b.amt_balance_GBP,0)) Total_GBP, 
     (a.amt_balance_EUR - COALESCE(b.amt_balance_EUR,0)) Total_EUR, 
     (a.amt_balance_USD - COALESCE(b.amt_balance_USD,0)) Total_USD 
FROM vui_trading_review_form_client a LEFT JOIN vui_trading_review_form_bank b 
     on (a.Client_ID = b. provider) AND 
      (a.Month = b.Month) 
WHERE a.month = '201202' and b.provider='TOTALS'; 
+0

Спасибо, это почти работает. Он игнорирует предложение where, хотя где month = '201202' и provider = 'TOTALS'; когда я пытаюсь добавить его, я получаю неоднозначный результат –

+0

ой, да, я пропустил, чтобы добавить его. Я просто обновлю ответ. –

+0

да, потому что вам нужно указать, где должна быть назначена таблица столбца. попробуйте добавить псевдоним таблицы, чтобы выиграть; t получить неоднозначную ошибку столбца. –

1

Вы просто пытаетесь сделать это:

select (a.amt_balance_GBP - b.amt_balance_GBP) as GBP, 
    (a.amt_balance_EUR - b.amt_balance_EUR) as EUR, 
    (a.amt_balance_USD - b.amt_balance_USD) as USD 
from vui_trading_review_form_client a, vui_trading_review_form_bank b 
where a.month = '201202' and a.client_id ='TOTALS' and 
     a.month = b.month and a.client_id = b.provider 
+0

Благодарим вас за этот ответ, да, это выглядит тем, что я пытаюсь сделать. Однако когда я запускаю это, я получаю синтаксическую ошибку? –

+0

У меня была опечатка, это должно работать в Sybase ASE или SQL Server, но я не уверен в других. – BenSchro10

+0

Спасибо, снова я получаю ту же проблему, что и с предложением @johntotetwoo - все суммы равны 0. возможно, это потому, что я использую mysql –

Смежные вопросы