Страницы

Поиск по вопросам

четверг, 23 мая 2019 г.

sql вывести название категорий и посчитать количество товаров в данной категории

Проблема такова есть у меня список категорий, к категориям необходимо написать количество товаров отвечающие даным категориям.

В базе данных имеются 2 таблицы

+Product |_id |_name |_category_id |_article

+Category |_id |_category_id |_name

Посчитать количество товаров - просто.
SELECT category_id as category, count(*) AS cnt FROM product GROUP BY category_id
В результате мы получим таблицу вида:

category: 1 2 3 4 5 ... в общем номера категорий cnt: ... количества товаров в категориях
Как мне сделать пересчет товаров и сопоставить колонку "category_id" таблицы product с колонкой "name" таблицы Category(названия категорий) в одном запроса?
Пробовал так:
SELECT category_id as category, count(*) AS cnt FROM product INNER JOIN category on product.category_id = category.category_id GROUP BY category_id
Пробовал так:
SELECT fid AS category, COUNT(*) AS cnt, cname FROM (SELECT product.category_id AS fid, category.name AS cname, category.id AS cid FROM category LEFT JOIN category on product.category_id = category.category_id) newtable GROUP BY cid, cname
В общем с SQL я не силен, буду рад любой помощи.

Ответ
SELECT category.name as category, count(*) AS cnt FROM product INNER JOIN category on product.category_id = category.category_id GROUP BY category.category_id


Ответ

Вот так должно все нормально работать:
SELECT c.name AS category, count(*) AS cnt FROM product AS p INNER JOIN category c ON p.category_id = c.category_id GROUP BY p.category_id
Мой результат:
"Category 01" => 2 "Category 02" => 3 "Category 03" => 4

Комментариев нет:

Отправить комментарий