@lesh_a

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

Есть таблица категорий: id, title, parent_id;
Таблица товаров: id, name, category_id;

Мне нужно получить количество товаров для списка категорий. Если я ввожу главную категорию, нужно подсчитать вместе с подкатегориями.
Я сделал вот такой запрос, но если в нем ввести главную категорию, то он выведет количество товаров для каждой подкатегории этой категории. А мне нужно чтоб он их подсчитал под одним полем с именем главной категории.
(
SELECT categories.title, COUNT(*)
FROM products
LEFT JOIN categories ON categories.id = products.category_id
WHERE products.category_id IN (2,4,5) 
GROUP BY categories.id
)

UNION

(
 SELECT categories.title, COUNT(*) 
 FROM products
 LEFT JOIN categories ON categories.id = products.category_id
 WHERE products.category_id IN (SELECT categories.id FROM categories WHERE parent_id IN (2,4,5))
 GROUP BY categories.id
)
  • Вопрос задан
  • 572 просмотра
Решения вопроса 1
erge
@erge
Примус починяю
как-то так - тык

select c.title, count(p.product_id )
  from (
select title, category_id from categories c where c.category_id IN (1,2)
UNION
select
    (select title from categories c1 where c1.category_id = c.parent_id) as title,
    category_id
  from categories c where parent_id IN (1,2)
    ) c
   JOIN products p ON p.category_id = c.category_id
  GROUP BY c.title


если уровень вложенности больше чем 1, то смотри в гугле обход дерева на MySQL
mysql обход дерева
Обход дерева
Задача отображения деревьев в MySql. Способ отобра...
Иерархические (рекурсивные) запросы
и т.д.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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