Сумма подзапросов - MySQL
Формулировка задачи:
Есть запрос
По отдельности выводится все отлично, но никак не могу понять, как получить сумму этих двух подзапросов?
SELECT ( (SELECT SUM(zakaz_teplica_tovar.summa) FROM zakaz_teplica_tovar LEFT JOIN zakaz_teplica ON zakaz_teplica_tovar.id_zakaz_teplica=zakaz_teplica.id WHERE zakaz_teplica.id_zakaz=zakaz.id AND zakaz_teplica_tovar.name LIKE "%сборка%") + (SELECT SUM(zakaz_dop.summa) FROM zakaz_dop WHERE zakaz_dop.name LIKE "%сборка%" AND zakaz_dop.id_zakaz=zakaz.id) ) FROM `zakaz` ORDER BY id
Решение задачи: «Сумма подзапросов»
textual
Листинг программы
select id_zakaz, sum(summa) from (select id_zakaz, summa from tovar1 union all select id_zakaz, summa from tovar2) t join zakaz z on t.id_zakaz=z.id group by id_zakaz;
Объяснение кода листинга программы
В этом коде происходит следующее:
- Внутренний запрос (подзапрос) выполняется дважды: для таблицы
tovar1
и для таблицыtovar2
. - Для каждой из этих таблиц подсчитывается сумма значений столбца
summa
для каждогоid_zakaz
. - Результаты этих подсчетов объединяются в одну таблицу с помощью оператора
UNION ALL
. - Полученная таблица присоединяется (объединяется) к таблице
zakaz
по полюid_zakaz
. - Для полученной таблицы подсчитывается сумма значений столбца
summa
для каждогоid_zakaz
. - Результат этой операции выводится на экран.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д