sql >> Database >  >> RDS >> PostgreSQL

Innerlijke join &outer join; is de volgorde van tabellen in van belangrijk?

Ik denk dat je dit kunt zien als een probleem met de prioriteit van de operator.

Wanneer je dit schrijft:

FROM groups grp,
     insrel archiverel  
LEFT OUTER JOIN ownrel ownrel ON grp.number = ownrel.dnumber   
LEFT OUTER JOIN tags tags ON tags.number = ownrel.snumber   

Ik denk dat het door de parser als volgt wordt geïnterpreteerd:

FROM groups grp,
(
  (
     insrel archiverel  
     LEFT OUTER JOIN ownrel ownrel ON grp.number = ownrel.dnumber   
  )
LEFT OUTER JOIN tags tags ON tags.number = ownrel.snumber
)

Als dat zo is, dan is in de binnenste join "grp" niet gebonden.

Als je de regels met "groups" en "insrel" omdraait, is de binnenste join van toepassing op "groups" en "ownrel", dus het werkt.

Waarschijnlijk zou dit ook werken:

    FROM groups grp
         JOIN insrel archiverel  ON archiverel.dnumber = grp.number
    LEFT OUTER JOIN ownrel ownrel ON grp.number = ownrel.dnumber   
    LEFT OUTER JOIN tags tags ON tags.number = ownrel.snumber 
WHERE archiverel.snumber = 11128188


  1. Marge berekenen in MySQL

  2. Oracle JDeveloper 12c gebruiken met Oracle Database, deel 1

  3. Hoe maak ik een reeks in MySQL?

  4. ODBC-query op MS SQL Server die de eerste 255 tekens alleen retourneert in PHP PDO (FreeTDS)