Объединение и суммирование таблиц SQL - MySQL
Формулировка задачи:
Нужна помощь.
Таблица Material с полями Naimenovanie, Kol, Cena_bez_NDS, Ed_izm
Таблица Zakaz2 с полями Naimenovanie, Kol
Наименование(Naimenovanie) в двух таблицах повторяется. Нужно сгруппировать по наименованию(Naimenovanie) и суммировать все строки количества(kol), которые соответствуют наименованию. Тоже самое с таблицей Zakaz2.
Пример:
таблица Material
наименование_1 500
наименование_1 100
Таблица Zakaz2
Наименование_1 2
Наименование_1 3
---------------------
Вывод: наименование_1 600 Наименование_1 5
Тоже самое с таблицей Zakaz2. Объединить две эти таблицы.
Этот код работает, но он почему-то суммирует количество и умножает на количество одинаковых наименований, которые находятся в таблице Zakaz2(Material).
Пример:
таблица Material
наименование_1 500
наименование_1 100
Таблица Zakaz2
Наименование_1 2
Наименование_1 3
--------------------
Выводит: Наименование_1 1200 Наименование_1 10
SELECT Material.Naimenovanie, Zakaz2.Naimenovanie, SUM(Material.Kol) AS Kol, MAX(Material.Cena_bez_NDS) AS Cena_bez_NDS, MAX(Material.Ed_izm) AS Ed_izm, SUM(Zakaz2.Kol) AS Kol FROM Material LEFT OUTER JOIN Zakaz2 ON Material.Naimenovanie = Zakaz2.Naimenovanie GROUP BY Material.Naimenovanie,Zakaz2.Naimenovanie ORDER BY 1
Решение задачи: «Объединение и суммирование таблиц SQL»
textual
Листинг программы
SELECT Material.Naimenovanie, Material.Koll AS Koll, Material.Cena_bez_NDS AS Cena_bez_NDS, Material.Ed_izm AS Ed_izm, SUM(Zakaz2.Kol) AS Kol FROM (SELECT Naimenovanie, MAX(Cena_bez_NDS) AS Cena_bez_NDS, MAX(Ed_izm) AS Ed_izm, SUM(Kol) AS Koll FROM Material GROUP BY Naimenovanie) AS Material LEFT OUTER JOIN Zakaz2 ON Material.Naimenovanie = Zakaz2.Naimenovanie GROUP BY Material.Naimenovanie
Объяснение кода листинга программы
Код написан на SQL и выполняет объединение и суммирование таблиц. Вот список действий, которые выполняются в этом коде:
- Создается подзапрос, который выбирает из таблицы Material данные о названии материала, максимальной цене без НДС и количестве.
- Эти данные группируются по названию материала.
- Затем, основной запрос выбирает данные из таблицы Material и выполняет левое внешнее соединение с таблицей Zakaz2 по названию материала.
- В результате получается список данных, включающий название материала, его цену без НДС, количество и общее количество заказов (сумма количества всех заказов для каждого материала).
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д