Запрос для вычисления суммы из 3 разных таблиц

#sql

#sql

Вопрос:

У меня есть 3 таблицы

Таблица A:

 Cid acc_id acc balance
1   345     100
1  456    300
2  347    500
  

Таблица B:

 Cid acc_id acc balance
1   348     100
1  457    300
2  349    500
  

Таблица C:

 Cid acc_id acc balance
1   340     100
1  457    300
2  344    500
  

Мне нужно создать единую таблицу, в которой указана сумма остатков для каждого клиента во всех 3 таблицах.

 Cid. Balance
1.    1200
2.    1500
  

Для этой цели мне нужен SQL. Поскольку идентификатор клиента повторяется в таблице, я в замешательстве.

Комментарии:

1. Смотрите о ОБЪЕДИНЕНИИ.

2. Вы используете MySQL или Oracle?

3. Почему в результате нет cid = 3?

4. Разве баланс CID # 1 не должен составлять 300 долларов, а баланс CID # 2 — 900 долларов?

5. Ваши ожидаемые результаты не соответствуют вашему примеру ввода. Любая форма кодирования требует внимания к деталям. Просто убедившись, что вы правильно указали детали в своем вопросе, иногда вы можете приблизиться к ответу или намного ближе. Пожалуйста, отредактируйте свой вопрос и исправьте несоответствия и ошибки.

Ответ №1:

Использование union all и агрегирование

 select cid, sum(balance)
from ((select Cid, acc_id, balance
       from a
      ) union all
      (select Cid, acc_id, balance
       from b
      ) union all
      (select Cid, acc_id, balance
       from c
      )
     ) abc
group by cid;
      
  

Ответ №2:

Вы можете использовать UNION ALL , как в:

 select
  cid, 
  sum(balance) as balance 
from (
  select * from table_a
  union all
  select * from table_b
  union all
  select * from table_c
) x
group by cid
  

Комментарии:

1. Мне также нужно суммировать внутри таблицы? Будет ли это достигнуто с помощью этого?

2. @akr Ты пробовал это?