SQL запрос

Рейтинг: 0Ответов: 1Опубликовано: 08.12.2014

Добрый вечер. Помогите, пожалуйста, с составлением запроса. Буду очень благодарен.

SELECT one.name, (SUM(one.summ)+SUM(two.summ)) FROM table1 one JOIN table2 two ON (one.name = two.name)

Мне необходимо создать представление, которое будет содержать в себе Имя (Name) и Сумму (Summ) из 2-х (вообще-то 3-х, но неважно) других таблиц. Проблема в том, чтобы получить множество записей типа Name Summ.
Надеюсь, понятно объяснил. То есть имеется:

Table1 
Name      Summ
Ваня      100
Петя      200
Коля      150
Саша      30
Никита    300

Table1 
Name      Summ
Ваня      40
Петя      10
Коля      50

Нужно получить на выходе
Table3 
Name      Summ
Ваня      140
Петя      210
Коля      200
Саша      30
Никита    300

Я пробовал добавить в конец запроса выборку имён. Но в результате получал только 1 строку.

 SELECT one.name, (SUM(one.summ)+SUM(two.summ)) FROM table1 one JOIN table2 two ON (one.name = two.name) WHERE one.name = (SELECT DISTINCT name FROM table1)

Подскажите, что исправить или добавить. Спасибо заранее.

Ответы

▲ 1

Вот запрос:

SELECT name, sum(summ) as summ
FROM
( 
  SELECT  name, sum(summ) as summ
  FROM table1
  GROUP BY name
UNION ALL
  SELECT  name, sum(summ) as summ
  FROM table2
  GROUP BY name
// и т.д сколько у вас таблиц
) as tsumm
GROUP BY name

Но дело в том, что при разрастании таблиц, записей на запросы много времени будет уходить.

Еще такой вопрос: почему у вас в архитектуре в разных таблицах хранятся одинаковые сущности - Имя - сумма?
Из тех данных, что есть, можно сделать вывод о неправильной архитектуре БД.