我有两个表格看起来像这样

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
.

那么有帮助吗?

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top