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

Oracle CONNECT BY再帰的な子から親へのクエリ、自己参照する最終的な親を含める

    WITHを使用してその結果を得ました 句。

    WITH REC_TABLE ( ID, PARENT_ID)
    AS
    (
        --Start WITH 
        SELECT ID, PARENT_ID
        FROM table
        WHERE ID='C'
    
        UNION ALL
        --Recursive Block
        SELECT T.ID, T.PARENT_ID
        FROM table T 
        JOIN REC_TABLE R
        ON R.PARENT_ID=T.ID
        AND R.PARENT_ID!=R.ID   --NoCycle rule
    )
    SELECT *
    FROM REC_TABLE;
    

    そして、それもそのように機能するようです。

    select id, parent_id
    from T
    START WITH id = 'C'
    CONNECT BY id = PRIOR parent_id and parent_id!= prior id;
    --                                  ^^^^^^^^^^^^^^^^^^^^
    --                                      break cycles
    

    お役に立てば幸いです。




    1. PHPを使用してアップロードされたファイルを取得する方法

    2. データソースのColdFusion10/ Windowns 7Pro64ビット接続の検証に失敗しました

    3. JavaからOracleへの一括挿入

    4. PostgreSQLでEXCLUDEを使用して隣接/重複するエントリを防止する