Есть таблица категорий: 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
)
Если уровень в категориях только 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
Виртуальный выделенный сервер (VDS) становится отличным выбором
имеется переменная в которой содержаться массив содержащий более 15к значенийНужно удалить из массива элементы содержащие в себе значение...
Есть код который работает на других сайтах, а на этом работать не хочет