sql >> Base de Datos >  >> RDS >> PostgreSQL

¿Importa el orden de las tablas en una combinación cuando se utilizan combinaciones IZQUIERDAS (externas)?

Es lo mismo pero es ambiguo como el infierno con el implícito UNIONES CRUZADAS. Use JOINS explícitos.

Si se une a la cláusula WHERE, los resultados pueden difieren porque las uniones y los filtros están mezclados.

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)

Notas:

  • INNER JOINS y CROSS JOINS son conmutativos y asociativos:el orden generalmente no importa.
  • Las UNIONES EXTERNAS no son las que usted identificó
  • SQL es declarativo:le dice al optimizador lo que quiere, no cómo hacerlo. Esto elimina las consideraciones del pedido JOIN (sujeto a los 2 elementos anteriores)