Объединение и суммирование таблиц 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 по названию материала.
- В результате получается список данных, включающий название материала, его цену без НДС, количество и общее количество заказов (сумма количества всех заказов для каждого материала).
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д