#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. Круто, спасибо тебе большое, ДМ. Решено! Решено!