Ilja: MySQL & Left Join, wieso nicht alle Datensätze?

Beitrag lesen

yo,

weiß jemmand was da schief gelaufen ist bzw. wie ich zum gewünschten Ergebnis komme?

drei dinge laufen bei dir schief.

zum einen die tabellennamen. wenn ich deine tabellen und daten eingebe, bekomme ich eine fehlermeldung, dass es die tabelle BVP_vote_option nicht gibt. und das macht auch sinn, heißen deine tabellen doch users, vote, und vote_option.

zweitens, das dbms führt erst den LEFT JOIN aus und dann die bedingung in der WHERE klausel. dies kann zu unerwarteten ergebnissen kommen, da damit quasi der OUTER JOIN ausgehebelt wird. dies kannst du umgehen, indem du die WHERE bedingung mit in die JOIN bedingung nimmst.

LEFT JOIN users ON (options.oid = users.oid AND users.vid = 7)

drittens musst du mit deiner gruppierung, bzw, den spalten aufpassen, die du asugeben willst. mysql hat dort einen nicht optimalen weg eingeschlagen. grundsäzlich gilt, jede spalten die du ausgeben willst, muss auch mit in die GROUP BY klausel rein, ausgenommen sind aggregat-funktionen wie COUNT(). und daran würde ich mich auch halten, auch wenn mysql keine fehlermeldung ausgibt.

Ilja