У меня есть 2 стола: categories
и products
.Подкатегории подкатегорий с условием
Категории имеют структуру отношений между родителями и дочерними элементами и данные извлекаются путем присоединения к одной и той же таблице.
При получении данных, я должен рассчитывать:
- сколько у продукты каждая категория содержит, которые имеют
stock >= 1
- сколько у подкатегорий категория содержит, которые содержат, по меньшей мере, 1 продукт с
stock >= 1
SELECT c. * , count(DISTINCT s.cat_id) AS number_of_subcategories, count(DISTINCT p.id) AS number_of_products FROM categories c
LEFT JOIN categories s
ON s.parent_id = c.cat_id
LEFT JOIN products p
ON p.cat_id = c.cat_id AND p.stock >= 1
GROUP BY c.cat_name
ORDER BY number_of_products ASC
На первый взгляд все идет хорошо, но, к сожалению, я получаю общее количество подкатегорий.
Я пропустил еще одно соединение или какова моя проблема до сих пор?
Вот код: SQLFiddle
Вау, это на самом деле довольно удивительное решение :) Спасибо! – vikingmaster