Задать вопрос
@mRForumman

Как подсчитать количество товаров в категории?

Здравствуйте. Помогите составить SQL запрос. Мне нужно подсчитать количество товаров в категории. Насколько я понял мне нужен LEFT or RIGT JOIN, но я не разобрался как это всё связать и получить данные.

Таблица меню (они же и категории)
CREATE TABLE `main_menu` (
  `id` int(11) NOT NULL,
  `title` varchar(255) NOT NULL,
  `parent` int(11) NOT NULL,
  `alias` varchar(255) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;


Таблица с продуктами:
CREATE TABLE `products` (
  `id` int(11) NOT NULL,
  `img` varchar(255) NOT NULL,
  `title` varchar(255) NOT NULL,
  `descr` text NOT NULL,
  `full_text` text NOT NULL,
  `category` int(11) NOT NULL,
  `status` int(11) NOT NULL,
  `price` int(11) NOT NULL,
  `code` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;


Здесь в столбце `category` int(11) NOT NULL, записывается или же храниться id категории из таблицы выше(`main_menu` `id` int(11)).

Я связал столбцы
ALTER TABLE `products`
  ADD CONSTRAINT `products_ibfk_1` FOREIGN KEY (`category`) REFERENCES `main_menu` (`id`);
COMMIT;


Связал кажется правильно(но не уверен), а вот составить sql запрос у меня не получилось.
  • Вопрос задан
  • 3092 просмотра
Подписаться 1 Простой Комментировать
Решения вопроса 3
@TelepnevDmitriy
Senior Web Developer
select c.id, c.title, count(*)
from products p
join main_menu c on c.id = p.category
group by c.id, c.title
Ответ написан
tsklab
@tsklab
Здесь отвечаю на вопросы.
SELECT COUNT(ID) FROM products WHERE category = <число>

С наименованием категории:
SELECT main_menu.title, COUNT(products.ID) 
  FROM products LEFT JOIN main_menu ON category = main_menu.ID 
  GROUP BY main_menu.title
  ORDER BY 1
Ответ написан
Комментировать
@nozzy
Symfony, Laravel, SQL, Python, Telegram
select,
t1.title, 
t2.category,
count(*)
from main_menu t1
join products t2 on t2.category = t1.id
where t1.title = '...'
group by t1.title, t2.category
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы