phpbar.de logo

Mailinglisten-Archive

Auf Referenz pruefen

Auf Referenz pruefen

Michael Donning donning at informenta.de
Mit Aug 13 13:44:08 CEST 2003


Hallo Nikolas,

> -----Original Message-----
> From: Nikolas Hagelstein [mailto:hagelstein at hauptsache.net]
> Hi,
> > Ansonsten sehe ich in Deiner Query eine Unart, du verwendest
> ein Group By,
> > aber keine Aggregatfunktionen. Andere DB's hätten Dir die Query
> z.T. schon
> > um die Ohren geschlagen :).
> Kannst du das ein wenige genauer ausfuehren ?
> Bye,
> 		Niko

Sicher,

siehe Abschnitt

6.3.7 Functions for Use with GROUP BY Clauses

unterer Teil.

MySQL hat GroupBY abweichend von ANSI erweitert.

Normallfall:

Sobald Group By in einem Statement verwendet wird, muß jede in Select
aufgeführte Spalte entweder in Group By aufgeführt sein, oder es muß eine
Aggregatfkt. für die Spalte angegeben werden, damit das DBMS weiß, wie es
einen Wert aus der Menge der gruppierten Spalten auswählen soll.

Mysql:

Lt. Handbuch wählt MySql bei Weglassen der Fkt. "irgendeinen" Wert aus der
Menge aus. Gut, bei nährerer Betrachtung mag das bei Deiner Query mehr oder
minder zufällig gerade klappen, da ja nur entweder ein NULL oder aber 1-n
Bildreferenzen je Artikel, nie aber beides gleichzeitig je Artikel
auftaucht. Vielleicht hast Du das ja bereits gewußt und diese Query auf
MySQL hin optimiert, indem du das max() gestrichen hast.

"Korrekt" nach ANSI SQL wäre es statt nur if(...) ein max(if(...)) zu
verwenden.

Grüße,
Michael Donning

-- 
Infos zur Mailingliste, zur Teilnahme und zum An- und Abmelden unter
-->>  http://www.4t2.com/mysql 


php::bar PHP Wiki   -   Listenarchive