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

257
27 августа 2021, 17:30

Есть таблица категорий: 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
)
Answer 1

Если уровень в категориях только 1, то можно сделать так. В противном случае нужно использовать рекурсию

 SELECT 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 ) )
          OR products.category_id IN ( 2, 4, 5 )
        )

Или так

 SELECT COUNT(*)
 FROM   products
        LEFT JOIN categories c1 ON c1.id = products.category_id AND c1.id IN (2,4,5)
        LEFT JOIN categories c2 ON c2.id = products.category_id AND c2.parent_id IN (2,4,5)
 WHERE  c1.id IS NOT NULL OR c2.id IS NOT null
READ ALSO
Удалить часть массива по значение

Удалить часть массива по значение

имеется переменная в которой содержаться массив содержащий более 15к значенийНужно удалить из массива элементы содержащие в себе значение...

113
Обновление формы с файлом в Symfony

Обновление формы с файлом в Symfony

Доброго времени суток!

117
Скачать картинку по url - PHP

Скачать картинку по url - PHP

Есть код который работает на других сайтах, а на этом работать не хочет

240