我想检索包含产品的所有类别的层次结构。
类别结构将是:
Categ A
^--Categ B
^--Categ C
^-- Prod 1
^-- Prod 2
^--Categ D
^--Categ E
^--Categ F
^--Categ G
对于上面显示的结构,我想过滤掉分类D,分类E,分类F,分类G ,因为它们没有任何产品或任何子类别有产品。
答案 0 :(得分:1)
您可以迭代执行此操作。只需运行此删除,直到没有返回任何记录:
delete c
from category c left join
category child
on c.id = child.parent_id
where child.id is null and
not exists (select 1 from category_productd cp where cp.categ_id = c.id) ;
您有分层数据结构。除了循环之外,MySQL实际上不支持这样的结构。
答案 1 :(得分:0)
为什么不用产品获取所有类别而不是删除没有产品的类别?第一件事可以通过内部联接完成:
SELECT *
FROM category_product as a
JOIN product as b
ON a.prod_id = b.id