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

OracleのSQLのツリー構造。SQLOracleでツリー、子ノード、親ノードを表示する方法

    クエリ-ツリー構造全体

    SELECT *
    FROM   Employee
    START WITH ParentID IS NULL
    CONNECT BY PRIOR ID = ParentID
    ORDER SIBLINGS BY LastName, FirstName, ID;
    

    クエリ-特定の従業員の子

    これには階層クエリは必要ありません。
    (親はバインド変数:parent_idによって指定されます )

    SELECT *
    FROM   Employee
    WHERE  ParentID = :parent_id
    ORDER BY LastName, FirstName, ID;
    

    クエリ-特定の従業員の子孫

    ツリー全体と同じクエリですが、開始点が異なります
    (親はバインド変数:parent_idによって指定されます )

    SELECT *
    FROM   Employee
    START WITH ParentID = :parent_id
    CONNECT BY PRIOR ID = ParentID
    ORDER SIBLINGS BY LastName, FirstName, ID;
    

    クエリ-従業員とその祖先

    前のクエリと同様ですが、CONNECT BYを使用します 逆にすると、従業員ごとに直属のマネージャーが1人だけになるため、兄弟を注文する必要はありません。
    (従業員はバインド変数:employee_idによって指定されます。 )

    SELECT *
    FROM   Employee
    START WITH ID = :employee_id
    CONNECT BY PRIOR ParentID = ID;
    

    クエリ-従業員のマネージャー

    前のクエリと同じですが、フィルタLEVEL = 2があります 直接の親行を取得するだけです。
    (従業員はバインド変数:employee_idによって指定されます )

    SELECT e.*
    FROM   Employee e
    WHERE  LEVEL = 2
    START WITH ID = :employee_id
    CONNECT BY PRIOR ParentID = ID;
    



    1. InsertステートメントのPostgresでUUIDを生成しますか?

    2. SQL主キー

    3. MySQLデータベースをUTF-8エンコーディングに変換する方法

    4. 特定の場所にデータベースを備えたAndroidSQLiteデータベースは可能ですか?