PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Das Mischen von expliziten und impliziten Joins schlägt fehl mit There is an entry for table ... but it can not be referenced from this part of the query

Die SQL-Spezifikation besagt, dass explizite Joins vor impliziten Joins ausgeführt werden. Dies ist ein impliziter Join:

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

Dies ist ein expliziter Join:

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

Dieses Codebit:

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

ist ein expliziter Join und wird zuerst ausgeführt. Beachten Sie, dass zu diesem Zeitpunkt die Tabelle mit dem Alias ​​i noch nicht angesehen wurde, sodass sie noch nicht verknüpft werden kann. Beachten Sie, dass MySQL dieses Verhalten meiner Meinung nach in 5.2 behoben hat und diese Abfrage dort auch nicht mehr funktioniert.