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

Le mélange de jointures explicites et implicites échoue avec Il existe une entrée pour la table ... mais elle ne peut pas être référencée à partir de cette partie de la requête

La spécification SQL indique que les jointures explicites sont effectuées avant les jointures implicites. Ceci est une jointure implicite :

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

Ceci est une jointure explicite :

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

Ce bit de code :

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

est une jointure explicite et est exécutée en premier. Notez qu'à ce stade, la table aliasée comme i n'a pas encore été examinée, elle ne peut donc pas encore être jointe. Notez que MySQL a corrigé ce comportement dans la version 5.2, je crois, et cette requête ne fonctionnera plus là-bas non plus.