phpbar.de logo

Mailinglisten-Archive

[php] OT MySQL: Globale Werte bei Subquery und JOIN ON

[php] OT MySQL: Globale Werte bei Subquery und JOIN ON

Sebastian Mendel lists at sebastianmendel.de
Fre Feb 29 10:58:48 CET 2008


Sebastian Mendel schrieb:
> Michael Borchers schrieb:
>> Ich habe zwei Querys, die im Grunde dasselbe tun, nur anders geschrieben sind.
>> Beide verwenden eine Subquery. Eine davon einen JOIN, und genau diese funktioniert auch nicht.
>>
>> Meldung:
>> Unknown column 'b.benefits_id' in 'on clause'
>>
>> Das verwundert mich, denn in der Schreibweise der 1. Query ist b.benefits_id bekannt,
>> und das obwohl beide Varianten in einer Subquery darauf zugreifen.
>>
>> Ich vermute also, dass eine Variable aus der Ursprungstabelle (hier benefits->benefits_id)
>> global in einer Subquery verfügbar ist, sofern sie nicht in einem JOIN ON ( ) steht.
>> Ist das richtig? Ist ja irgendwie traurig:(
> 
> es könnte aber auch daran liegen das das JOIN zu einem früheren Zeitpunkt 
> ausgeführt wird als das WHERE, die Bedingung benötigt ja den Aktuellen 
> Datensatz aus dem 'parent', dieser liegt aber vielleicht beim JOINen noch 
> nicht vor da das vielleicht passiert bevor die Daten aus der Tabelle geholt 
> werden, und das WHERE erst dann ausgeführt/überprüft wird

die Schlagworte dazu heißen:

correlated subqueries (greifen auf Werte des 'outer query' zu)
materialized subquery (bereits vorher ausgeführt)

ich bin mir aber trotzdem nicht sicher ob das in deinem Fall ein Fehler oder 
eine Beschränkung ist ...



-- 
Sebastian

php::bar PHP Wiki   -   Listenarchive