Mailinglisten-Archive |
Michael Borchers 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 >> >> -- >> Sebastian > > Ergo kann man es nur über die erste Schreibweise lösen? naja, ich würde es wohl eher so machen: SELECT benefits.benefits_id, SUM(time_sheets.time_sheets_time) AS benefits_time_sheets FROM benefits LEFT JOIN time_sheets_benefits ON time_sheets_benefits.benefits_id = benefits.benefits_id LEFT JOIN time_sheets ON time_sheets.time_sheets_id = time_sheets_benefits.time_sheets_id GROUP BY benefits.benefits_id (wenn ich den Sinn deiner Abfrage richtig verstanden habe) bzw, brauchst du eventuell die erste Tabelle gar nicht: SELECT time_sheets_benefits.benefits_id, SUM(time_sheets.time_sheets_time) AS benefits_time_sheets FROM time_sheets_benefits LEFT JOIN time_sheets ON time_sheets.time_sheets_id = time_sheets_benefits.time_sheets_id GROUP BY time_sheets_benefits.benefits_id -- Sebastian
php::bar PHP Wiki - Listenarchive