Составить запрос - MySQL (245809)

Узнай цену своей работы

Формулировка задачи:

Здравствуйте. Есть три таблицы с одинаковыми полями вида:
Название Описание
Картошка 123
Картошка 231
Водка 312
Название Описание
Ноутбук ???
Название Описание
Картошка 123
Пожалуйста, помогите составить запрос, который выводит таблицу:
Название Таблица 1 Таблица 2 Таблица 3 Всего
Картошка 2 0 1 3
Ноутбук 0 1 0 1
Водка 1 0 0 1
Т. е. запрос должен вывести количество вхождений каждого из товаров в таблицу, предварительно сгрупировав эти товары

Решение задачи: «Составить запрос»

textual
Листинг программы
CREATE TABLE tbl (
  tb    INT,    -- соответствует N-ой таблице
  nm  CHAR(10)
-- dscr char(10) -- для этого случая не нужно  
) engine = myisam DEFAULT CHARACTER SET = cp1251;
INSERT INTO tbl VALUES
  (1, 'картошка'),
  (1, 'картошка'),
  (1, 'водка'), 
  (2, 'ноутбук'), 
  (3, 'картошка');
SELECT 
  nm `Наименование`, 
  SUM(CASE WHEN tb = 1 THEN cnt ELSE 0 END) `таблица 1`,
  SUM(CASE WHEN tb = 2 THEN cnt ELSE 0 END) `таблица 2`,
  SUM(CASE WHEN tb = 3 THEN cnt ELSE 0 END) `таблица 3`,
  SUM(cnt) `Всего`
FROM (
  SELECT
    tb,
    nm,
    COUNT(nm) cnt
  FROM tbl
  GROUP BY tb, nm
 ) t
 GROUP BY nm;

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

  1. Создается таблица tbl с двумя полями: tb и nm.
  2. В поле nm записываются названия, а в поле tb — номера таблиц.
  3. В таблицу tbl добавляются данные: в поле nm — названия, а в поле tb — номера таблиц.
  4. Выполняется запрос, который выводит названия и количество записей в каждой таблице.
  5. В запросе используется функция SUM для подсчета общего количества записей.
  6. В запросе используется функция CASE для определения, к какой таблице относится запись.
  7. Результаты запроса выводятся на экран.

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


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

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

7   голосов , оценка 4.714 из 5