sql >> Databasteknik >  >> RDS >> Oracle

Bästa sättet att gå med i föräldra- och barnbord

Eftersom en förälder kan ha en underordnad rad i vissa av dessa tabeller måste du använda LEFT OUTER JOIN.

LEFT OUTER JOIN sammanfogar två tabeller och returnerar alla rader i den VÄNSTER tabellen, i detta fall A och alla matchningar från de andra tabellerna. När det inte finns någon matchning kommer det att returnera NULL i motsvarande kolumner i tabellerna att det inte fanns någon matchning.

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

REDIGERA

Jag har lagt till ett sätt att lägga till underordnade. Jag har tänkt dem mer bara för att göra dem uppenbara i en visuell representation. Men se upp...om detta leder till att underbarn har andra underbarn etc kanske din struktur inte är optimal.



  1. PHP Count site view skapar en rad varje dag

  2. hur man sammanfogar värde från en annan tabell med samma villkorsvärde

  3. Ta bort en databaspostprofil (SSMS)

  4. SQL Server 2017 steg för steg installation -1