Postgresql 在多个关系中,如果没有关联,则从表中删除所有记录
我在Postgresql 在多个关系中,如果没有关联,则从表中删除所有记录,postgresql,Postgresql,我在类别和项目之间有M2M关系 items: id | name | value 1 alpha 43 2 beta 34 类别具有自引用外键 id name parent_id 1 cat1 null 2 cat1_2 1 3 cat2 null 4 cat2_1 3 categories\u项目将项目连接到类别: id category_id item_id 1 2 1 我想删除
类别
和项目
之间有M2M关系
items:
id | name | value
1 alpha 43
2 beta 34
类别
具有自引用外键
id name parent_id
1 cat1 null
2 cat1_2 1
3 cat2 null
4 cat2_1 3
categories\u项目
将项目
连接到类别
:
id category_id item_id
1 2 1
我想删除
没有关联的项目的类别
items:
id | name | value
1 alpha 43
2 beta 34
类别
,这些类别有一个子类别,子类别有项
items:
id | name | value
1 alpha 43
2 beta 34
在上述示例中,无法删除cat1
,因为其子类别cat1_2
包含项cat2
可以删除,因为它本身及其子类别cat2_1
都没有项目
我从以下查询开始:
select *
from
categories as c
left outer join categories_items as ci
on ci.category_id = c.id
where
c.id is not null
这不起作用,没有null
,因为是M2M关系,而不是FK。“因为是M2M关系,而不是FK”-毫无意义。多对多关系也(应该)具有外键约束查询中M2M开关表在哪里?请回答您的问题并为类别添加完整的CREATE table语句,项目
和类别_项目
包括所有主键和外键constraints@a_horse_with_no_name我添加了更多信息。我没有添加完整的表,因为没有必要显示20个irelevant属性。是否只有1级子类别?