PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

L'ordre des tables dans une jointure est-il important lorsque des jointures LEFT (externes) sont utilisées ?

C'est pareil mais c'est ambigu comme l'enfer avec l'implicite CROSS JOIN. Utilisez des JOINS explicites.

Si vous vous joignez à la clause WHERE, les résultats peuvent diffèrent car les jointures et les filtres sont mélangés.

SELECT ....
  FROM apples a
       JOIN
       bananas b ON ...
       JOIN 
       oranges o ON ...
       LEFT JOIN
       kiwis k ON k.orange_id = o.id
 WHERE (filters only)

Remarques :

  • INNER JOINS et CROSS JOINS sont commutatifs et associatifs :l'ordre n'a généralement pas d'importance.
  • Les jointures externes ne sont pas celles que vous avez identifiées
  • SQL est déclaratif :vous dites à l'optimiseur ce que vous voulez, pas comment le faire. Cela supprime les considérations de commande JOIN (sous réserve des 2 éléments précédents)