sql >> データベース >  >> RDS >> Oracle

複数の親によるオラクル接続

    さて、あなたの問題は、正規化されていないテーブルデザインを使用していることのようです。指定されたIDの場合 常に同じParentID 、その関係をこれらすべての行で個別に示すべきではありません。

    より良い設計は、IDを使用して親子関係を示す単一のテーブルを持つことです。 主キーとして、およびIDのマッピングを示す2番目のテーブル ObjectIDへ 、ここでは、両方の列が一緒になって主キーを構成すると想定しています。次に、最初のテーブルに対して階層クエリを適用し、その結果を他のテーブルに結合して、各行に関連するオブジェクトを取得します。

    現在のテーブル構造でこれをエミュレートできます...

    with parent_child as (select distinct id, parent_id from table),
         tree as (select id, parent_id from parent_child
                   start with parent_id = 0
                   connect by prior id = parent_id )
    select id, table.parent_id, table.object_id
      from tree join table using (id)
    


    1. PHP:単一のクエリで複数のMySQLフィールドを更新する

    2. org.hibernate.tool.schema.spi.CommandAcceptanceException:コマンドを実行できません

    3. 多くのLIKE演算子の使用方法とインデックスの使用方法

    4. PDO/MySQLプリペアドステートメントを使用したパラメーターとしてのテーブル名