sql >> Database >  >> RDS >> Oracle

De beste manier om aan ouder- en kindtabellen deel te nemen

Aangezien een bovenliggende rij in sommige van die tabellen een onderliggende rij kan hebben, moet u LEFT OUTER JOIN gebruiken.

LEFT OUTER JOIN voegt twee tabellen samen en retourneert alle rijen van de LEFT-tabel, in dit geval A en alle overeenkomsten van de andere tabellen. Als er geen overeenkomst is, wordt NULL geretourneerd in de overeenkomstige kolommen van de tabellen dat er geen overeenkomst was.

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

BEWERKEN

Ik heb een manier toegevoegd om subchilden toe te voegen. Ik heb ze meer bedoeld om ze duidelijk te maken in een visuele weergave. Maar pas op... als dit ertoe leidt dat onderkinderen andere onderkinderen hebben enz., is uw structuur misschien niet optimaal.



  1. Postgresql-query voor het verkrijgen van een ouder-kindrelatie op n-niveau opgeslagen in een enkele tabel

  2. MySQL:tel de verschillende rijen per dag

  3. SQL - LOAD DATA INFILE - UTF8 probleem

  4. PostgreSQL - Wijs waarde toe aan elke rij op basis van criteria