У меня есть база данных с таблицей категорий, использующая вложенный подход в MySql.Но я продолжаю бить стену.Сайт содержит «разделы» видов (так как это зоомагазин).У меня уже есть запрос, который возвращает все категории, в которых есть продукты для каждого вида.
Теперь моя проблема в том, что я хочу, чтобы я мог показывать только те категории, в которых есть продукты.Например, если я создаю категорию food
с ребенком adult
.Тогда система не должна перечислять категории по каким-либо видам.Но как только я создаю Продукт в категории adult
, система должна перечислить Food
с дочерним элементом Adult
.
В настоящее время таблица имеет следующую структуру:
Категория:
- id
- top
- name
- lft
- rgt
- создано (для полноты)
- последнее обновление (для полноты)
Итак, яЯ могу построить полное дерево из таблицы для каждого вида, но мне нужно, чтобы категории были видны только тогда, когда в них есть продукты для вида.
Звучит достаточно просто, но по какой-то причине я не могу получить своимозг вокруг этого.Любая помощь?Как лучше всего подойти к этому?
Обновление:
Запрос, который я использую для получения категорий:
SELECT node.id as nid, node.top as top, node.*, brands.name as brandname from
brands, foods, foodcategories, categories as node, categories as parent WHERE
node.lft BETWEEN parent.lft AND parent.rgt AND parent.top=1 AND
foodcategories.food=foods.id AND foodcategories.category=node.id
AND brands.id=foods.brand AND foods.species={speciesid}
Затем я выполняю запрос, чтобы получить все категории и их lft, rgt.Из которого я могу построить дерево.