3

私はこのように少し見える2つのテーブルを持っています

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)

2つのDEF_IDが与えられた場合、一方の領域が他方の完全なサブセットであるかどうかをチェックする関数が必要です。私はCONNECTBYとINTERSECTで遊んでいますが、便利な関数ではなく、大きな混乱を書いています。

(比較的)簡単に機能するSQLクエリがあることを期待しています。

4

2 に答える 2

3

@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
于 2010-07-26T16:12:10.493 に答える
2

特定の DEF_ID のすべてのテラーを取得するクエリを考えると (それがあなたのテーブルにあるのかどうかはよくわかりません)、次のクエリが行を返さない場合、DEF_ID A は DEF_ID B のサブセットです。

select statement for A
MINUS
select statement for B

それは役に立ちますか?

于 2010-07-26T15:53:01.707 に答える