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

親テーブルと子テーブルを結合する最良の方法

    これらのテーブルの一部には親が子行を持っている可能性があるため、LEFTOUTERJOINを使用する必要があります。

    LEFT OUTER JOINは、LEFTテーブルのすべての行(この場合はA)と他のテーブルからのすべての一致を返す2つのテーブルを結合します。一致するものがない場合、一致しなかったテーブルの対応する列にNULLが返されます。

    SELECT *
    FROM A
    LEFT OUTER JOIN B
        ON A.Id = B.ParentID
    LEFT OUTER JOIN C
        ON A.Id = C.ParentID
        LEFT OUTER JOIN P
            ON C.Id = P.ParentID
        LEFT OUTER JOIN Q
            ON C.Id = Q.ParentID
    LEFT OUTER JOIN D
        ON A.Id = D.ParentID
    LEFT OUTER JOIN E
        ON A.Id = E.ParentID
    LEFT OUTER JOIN F
        ON A.Id = F.ParentID
        LEFT OUTER JOIN X
            ON F.Id = X.ParentID
        LEFT OUTER JOIN Y
            ON F.Id = Y.ParentID
    LEFT OUTER JOIN G
        ON A.Id = G.ParentID
    

    編集

    サブチャイルドを追加する方法を追加しました。私はそれらを視覚的表現で明らかにするためだけにそれらをもっと意図しました。しかし、注意してください...これがサブチャイルドに他のサブチャイルドを持っているなどの場合、あなたの構造は最適ではないかもしれません。



    1. SQL ServerでのRANK()の動作

    2. 条項による条件付き順序

    3. ユークリッド距離検索/クエリのためにmysqlのジオロケーションデータベースを最適化する方法

    4. sqlまたはphpPgAdminを使用してPostgreSQLデータベースのデータベースエンコーディングを変更するにはどうすればよいですか?