Составить запрос - 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;
Объяснение кода листинга программы
- Создается таблица
tbl
с двумя полями:tb
иnm
. - В поле
nm
записываются названия, а в полеtb
— номера таблиц. - В таблицу
tbl
добавляются данные: в полеnm
— названия, а в полеtb
— номера таблиц. - Выполняется запрос, который выводит названия и количество записей в каждой таблице.
- В запросе используется функция
SUM
для подсчета общего количества записей. - В запросе используется функция
CASE
для определения, к какой таблице относится запись. - Результаты запроса выводятся на экран.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д