sql >> Database teknologi >  >> RDS >> Oracle

Bedste måde at deltage i forældre- og børneborde

Da en forælder kan have en underordnet række i nogle af disse tabeller, skal du bruge LEFT OUTER JOIN.

LEFT OUTER JOIN forbinder to tabeller og returnerer alle rækkerne i LEFT-tabellen, i dette tilfælde A og alle matchene fra de andre tabeller. Når der ikke er noget match, vil det returnere NULL i de tilsvarende kolonner i tabellerne, som der ikke var match.

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

REDIGER

Jeg har tilføjet en måde at tilføje underordnede. Jeg har tænkt dem mere bare for at gøre dem tydelige i en visuel repræsentation. Men pas på...hvis dette fører til, at underbørn har andre underbørn osv., er din struktur måske ikke optimal.



  1. Få alle karakterer før mellemrum i MySQL

  2. mysql brugerrækkeniveau adgang

  3. PHP Omvendt rækkefølgen af ​​resultater fra MySQL DB

  4. MySQL-lagrede procedurer eller php-kode?