Mailinglisten-Archive |
Michael Dunkel schrieb: > Sebastian Mendel schrieb: >> Michael Dunkel schrieb: >> >>> bei sowas nimmt man dann HAVING >>> >>> SELECT ... FROM xxx WHERE blub = bla HAVING x=y >>> >> nein, bei sowas nimmt man es nicht >> > wieso nicht?! > > SELECT (COALESCE(AdGroup_x_Keyword.alte_klicks, 0) + > COALESCE(KeywordReport.clicks, 0)) as gesamtklicks FROM .....(Joins > blablabla)... WHERE parrent_id IN(12345,123, 356, 567) HAVING > gesamtklicks>1235 GROUP BY parrent_id > > das ist mal ein sehr stark beschnittenes praktisches beispiel und es > funktioniert ... yepp, ich hab ja nicht geschrieben das es nicht funktioniert - und keinesfalls wollte ich damit sagen das HAVING keine Berechtigung und man auch manchmal in den Sauren Apfel beißen muss und HAVING dort nimmt wofür es eigentlich nicht gedacht ist - aber wie in den anderen Mails bereits beschrieben ist es kein Ersatz für ein WHERE mit ALIAS! > SELECT (COALESCE(AdGroup_x_Keyword.alte_klicks, 0) + > COALESCE(KeywordReport.clicks, 0)) as gesamtklicks > FROM .....(Joins blablabla)... > WHERE parrent_id IN(12345, 123, 356, 567) > HAVING gesamtklicks>1235 > GROUP BY parrent_id MySQL muss hier hier alle Datensätze mit "parrent_id IN(12345, 123, 356, 567)" mit den anderen Tabellen JOINEN würdest du hingegen dein "gesamtklicks > 1235" als WEHRE definieren könnte MySQL auch dies bereist berücksichtigen bevor es die anderen Tabellen JOINT MySQL hätte also viel weniger zu tun. (wobei das natürlcih abhängig ist wieviele Datensätze durch "gesamtklicks > 1235" noch ausgeschlossen werden) -- Sebastian
php::bar PHP Wiki - Listenarchive