Объединение и суммирование таблиц 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. Объединить две эти таблицы.
Листинг программы
  1. SELECT
  2. Material.Naimenovanie, Zakaz2.Naimenovanie,
  3. SUM(Material.Kol) AS Kol,
  4. MAX(Material.Cena_bez_NDS) AS Cena_bez_NDS,
  5. MAX(Material.Ed_izm) AS Ed_izm,
  6. SUM(Zakaz2.Kol) AS Kol
  7. FROM Material LEFT OUTER JOIN Zakaz2
  8. ON Material.Naimenovanie = Zakaz2.Naimenovanie
  9. GROUP BY Material.Naimenovanie,Zakaz2.Naimenovanie
  10. ORDER BY 1
Этот код работает, но он почему-то суммирует количество и умножает на количество одинаковых наименований, которые находятся в таблице Zakaz2(Material). Пример: таблица Material наименование_1 500 наименование_1 100 Таблица Zakaz2 Наименование_1 2 Наименование_1 3 -------------------- Выводит: Наименование_1 1200 Наименование_1 10

Решение задачи: «Объединение и суммирование таблиц SQL»

textual
Листинг программы
  1. SELECT
  2. Material.Naimenovanie,
  3.  Material.Koll AS Koll,
  4.  Material.Cena_bez_NDS AS Cena_bez_NDS,
  5.  Material.Ed_izm AS Ed_izm,
  6.  SUM(Zakaz2.Kol) AS Kol
  7. FROM (SELECT Naimenovanie,
  8. MAX(Cena_bez_NDS) AS Cena_bez_NDS,
  9.  MAX(Ed_izm) AS Ed_izm,
  10. SUM(Kol) AS Koll
  11. FROM Material
  12. GROUP BY Naimenovanie) AS
  13. Material LEFT OUTER JOIN Zakaz2
  14. ON Material.Naimenovanie = Zakaz2.Naimenovanie
  15. GROUP BY Material.Naimenovanie

Объяснение кода листинга программы

Код написан на SQL и выполняет объединение и суммирование таблиц. Вот список действий, которые выполняются в этом коде:

  1. Создается подзапрос, который выбирает из таблицы Material данные о названии материала, максимальной цене без НДС и количестве.
  2. Эти данные группируются по названию материала.
  3. Затем, основной запрос выбирает данные из таблицы Material и выполняет левое внешнее соединение с таблицей Zakaz2 по названию материала.
  4. В результате получается список данных, включающий название материала, его цену без НДС, количество и общее количество заказов (сумма количества всех заказов для каждого материала).

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 3.25 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут