Проблема такова есть у меня список категорий, к категориям необходимо написать количество товаров отвечающие даным категориям.
В базе данных имеются 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
Комментариев нет:
Отправить комментарий