PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

La combinazione di join espliciti e impliciti non riesce con C'è una voce per la tabella ... ma non può essere referenziata da questa parte della query

La specifica SQL afferma che i join espliciti vengono eseguiti prima dei join impliciti. Questo è un join implicito:

FROM table1 t1, table2 t2 WHERE t1.id=t2.t1id

Questo è un join esplicito:

FROM table1 t1 JOIN table2 t2 ON (t1.id=t2.t1id)

Questo bit di codice:

categories c 
     LEFT JOIN photos p 
        ON p.referencekey = i.key 

è un join esplicito e viene eseguito per primo. Nota che a questo punto la tabella ha un alias perché non è stata ancora vista, quindi non può ancora essere unita. Nota che MySQL ha corretto questo comportamento in 5.2 credo e questa query non funzionerà più nemmeno lì.