Ilja: left join und where behindern sich gegenseitig?

Beitrag lesen

yo,

Die rechte kann aber auch mehrere Ergeniss haben. Also eine one to many Beziehung.(darum GROUP BY)

hier ist vorsicht geboten. sicherlich wirst du mehrere datensätze der rechten tabelle für einen datensatz der linken tabelle finden können. aber das ist dann erst einmal auch nicht so schlimm, werden halt mehrere angezeigt. was bei deinem GROUP BY viel schlimmer ist, dass du nur die die spalten bei der ausgabe anzeigen kannst, die entweder aggregat-funktion oder aber in der GROUP BY anweisung selbst enhalten sind. und das wäre in deinem falle nur ff_webserverdat.DSN. sprich dein * (anzeigen aller spalten) geht hier nicht und nur mysql wird dabei keinen fehler auspucken. alle anderen dbms werden bei der anweisung meckern. deshalb würde ich das group by erst einmal rausnehmen und noch besser, dass * auch. vielleicht kannst du uns ja noch mal mitteilen, welche spalten genau angezeigt werden sollen, dann kann man eine lösung knobbeln.

Wenn aber die rechte passt, dann soll sie möglichst im Feld 'Typ' 1 sein.

hier läßt du zuviel vorsicht walten. möglichst ist leider ein wort, dass in dbms nicht eingebaut ist, sondern du solltest dich schon darauf festlegen. ;-)

Nach dieser SQL werden aber nur Ergebnisse geliefert, in denen es auch in der rechten Tabelle ein passendes Ergebniss gibt. Weiß jemand, wie man das behebt.

wie bereits Sven gesagt hat, wird erst der JOIN ausgeführt und dann die Bedingungen in der WHERE klausel mit reingenommen. und durch den LEFT JOIN könen sich in der spalte ff_webserverpic.TYP auch NULL werte befinden. und NULL ist auf jeden fall ungleich 1, werden also damit rausgeworfen. du kannst das lösen, wie Sven sagt:

SELECT spalten
FROM ff_webserverpic LEFT JOIN ff_webserverdat
ON (ff_webserverdat.DSN=ff_webserverpic.DSN)
WHERE ff_webserverpic.TYP=1 OR ff_webserverpic.TYP = NULL

oder aber du kannst die bedingung mit in die JOIN Klausel mit reinnehmen.

SELECT spalten
FROM ff_webserverpic LEFT JOIN ff_webserverdat
ON (ff_webserverdat.DSN=ff_webserverpic.DSN AND ff_webserverpic.TYP=1)

Ilja