递归SQL子集查询,使用Connect
-
29-09-2020 - |
题
我有两个表格看起来像这样
AGR_TERR_DEF_TERRS
ID
DEF_ID
TERRITORY_ID (foreign key links to TERRITORIES.ID)
TERRITORIES
ID
NAME
PARENT_ID
(parent_id and id are recursive)
.
给定两个def_ids,我需要一个函数,该函数检查一个人是另一个是另一个的完整子集。 我一直在玩连接,并且相交,但是写了一个大混乱而不是一个有用的功能。
我希望有一个(相对)简单的SQL查询工作。
解决方案
在@Tony Andrews的建筑物回答,当DEF_ID_1所隐含的地区是DEF_ID_2的子集时,它会产生零行,
select id from territories start with id in
(select territory_id from agr_terr_def_terrs where def_id = :def_id_1)
connect by parent_id = prior id
minus
select id from territories start with id in
(select territory_id from agr_terr_def_terrs where def_id = :def_id_2)
connect by parent_id = prior id
. 其他提示
鉴于查询以获取给定def_id的所有riberories(我不太确定与表中的内容),如果以下查询返回任何行:
,则def_id a是def_id b子集:select statement for A
MINUS
select statement for B
.
那么有帮助吗?
不隶属于 StackOverflow