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