階層型データベース構造(列ID
などPARENT_ID
)があり、行ごとに定義されており、最上位の行には。がありNULL PARENT_ID
ます。
このテーブルのすべての関係を別のテーブルにフラット化します。たとえば、祖父母、親、孫の1つの階層に3つのレコードがある場合、3つのレコードがあります。
**ANCESTOR, DESCENDANT**
grantparent, parent
grandparent, grandchild
parent, grandchild
(grandparent, grandchild)
階層クエリを実行して孫が祖父母の子孫であると判断するのではなく、このフラット化されたテーブルにレコードが存在するかどうかを簡単に確認できます。
私の質問は、このフラット化されたテーブルを使用して、2つのノード間にあるすべてのレコードを最も効率的に返すにはどうすればよいかということです。例を使用して、パラメーターとして、grandparent
およびをパラメーターとして使用して、レコードgrandchild
を取得するにはどうすればよいですか。(grandparent, parent)
これを解決するために階層クエリを使用したくありません...結合なしでこれを実行できるかどうか疑問に思っています。