要删除没有分配产品的商店类别,我尝试使用WITH RECURSIVE来获得既没有直接产品分配也没有子类别已分配产品的所有类别。
包括以下表格:
我想到了以下查询:
WITH RECURSIVE used_nodes AS (
(SELECT id_category_node, fk_category, fk_parent_category_node
FROM category_node
WHERE fk_category IN (SELECT fk_category FROM product_category)
)
UNION
(SELECT c.id_category_node, c.fk_category, c.fk_parent_category_node
FROM category_node c
INNER JOIN used_nodes u ON u.id_category_node = c.fk_parent_category_node
)
)
SELECT fk_category
FROM category_node
WHERE fk_category NOT IN (
SELECT fk_category
FROM used_nodes
);
我希望该查询做什么:
我真正得到的东西看起来像是类别ID的混合集合。我已经尝试过此查询的几种不同变体,但结果看上去永远都不正确。