phpbar.de logo

Mailinglisten-Archive

[php] Einfache mySQL-Frage

[php] Einfache mySQL-Frage

Sebastian Mendel lists at sebastianmendel.de
Die Nov 13 10:41:40 CET 2007


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