Запрос с двойной СУММОЙ MySQL

#mysql

Вопрос:

У меня есть 2 таблицы Tabel_1:

 |idUnit  |Budget   |
|112     |1000     |
|112     |2000     |
 

Табель_2:

 |idUnit  | Real2   |
|112     | 500     |
|112     | 100     |
 

Как получить двойную сумму, чтобы быть:

 |idUnit  | TotalBudget | TotalReal2 |
|112     | 3000        | 600        |
 

Пожалуйста, помогите. Извините, мой английский бедный.

Ответ №1:

Учитывая таблицы:

Таблица 1

idUnit Бюджет
112 1000
112 2000

Табель_2

idUnit Реал2
112 500
112 100

Вы можете получить следующий результат:

idUnit Общий бюджет Итого реально 2
112 3000 600

Со следующим запросом:

 SELECT t1.idUnit, SUM(Budget) AS TotalBudget, t2.TotalReal2
FROM Tabel_1 AS t1
  JOIN (SELECT idUnit, SUM(Real2) AS TotalReal2
        FROM Tabel_2 GROUP BY idUnit
  ) AS t2 ON t1.idUnit = t2.idUnit
GROUP BY t1.idUnit;
 

Что мы сделали, так это сгруппировали результаты объединения двух таблиц по idUnit , что означает, что каждое значение idUnit будет отображаться в результате только один раз. Затем мы дважды использовали SUM() агрегатную функцию (по одному разу для каждого столбца, который мы хотим суммировать), чтобы сложить значения для каждого idUnit из них вместе.

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

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

1. @D M — Я думаю, что в операторе SELECT есть небольшая синтаксическая ошибка. Он отсутствует, КАК и в пунктах «ОТ». Подтверждено в вашем sqlfiddle. Должно быть: ВЫБЕРИТЕ t1.idUnit, СУММА(бюджет) КАК TotalBudget, СУММА(Real2) КАК TotalReal2 ИЗ Tabel_1 КАК t1, ПРИСОЕДИНИТЕСЬ К Tabel_2 Как t2 НА t1.idUnit = t2.idUnit ГРУППА ПО (t1.idUnit)

2. @LewPerren AS Ключевое слово не является строго необходимым (по крайней мере, в MySQL), но я добавил его для ясности. Спасибо!

3. запрос может появиться, но результаты будут неточными

4. Вы правы, я пропустил то, что я дважды присоединился. Это должно быть исправлено сейчас, спасибо.

5. Круто, спасибо тебе большое, ДМ. Решено! Решено!