PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

A mistura de junções explícitas e implícitas falha com Existe uma entrada para a tabela ... mas não pode ser referenciada a partir desta parte da consulta


A especificação SQL afirma que as junções explícitas são executadas antes das junções implícitas. Esta é uma junção implícita:
FROM table1 t1, table2 t2 WHERE t1.id=t2.t1id

Esta é uma junção explícita:
FROM table1 t1 JOIN table2 t2 ON (t1.id=t2.t1id)

Este bit de código:
categories c 
     LEFT JOIN photos p 
        ON p.referencekey = i.key 

é uma junção explícita e é executada primeiro. Observe que, neste ponto, a tabela alias como i ainda não foi examinada, portanto, ainda não pode ser unida. Observe que o MySQL corrigiu esse comportamento em 5.2, acredito, e essa consulta também não funcionará mais lá.