Philipp Hasenfratz: Query an mehrere Tabellen

Beitrag lesen

Halihallo Ilja

yo,

ich gestehe, die group by variante ist schneller und auch anwendbar, sprich das sollte bernd hoffentlich verwenden. was das group by 1 betrifft, so bekomme ich leider eine fehlermeldung dabei, kann aber an meinen dbms liegen, bzw. an der version.

Nun, es macht im Normalfall auch absolut keinen Sinn nach einer
Konstanten zu gruppieren, aber es war der Veranschaulichung dienlich.
Der Fehler kann bei MySQL daher rühren, dass Attribute intern einen
Alias erhalten und bei einem SELECT COUNT(*) das COUNT(*) intern 1
ist. Ein GROUP BY 1 (also GROUP BY COUNT(*)) führt dann logisch zu
einem Fehler. MySQL lässt sich jedoch auch austricksen:

SELECT COUNT(*) FROM table GROUP BY 1+1  /* welche Konstante man
wählt ist ja nebensächlich, das Ergebnis dasselbe. */

Dann wird 1 nicht mehr als internes Attributalias, sondern als Zahl
eines algebraischen Ausdrucks gewertet. Soweit zumindest meine
Vermutung und Schlüsse aus meiner Beobachtung.

ich glaube, ich muss mir noch mal ein paar columbo filme ansehen....

Und ich muss mich endlich mit schwarzer Magie auseinandersetzen :-)
Obwohl, dass was MySQL in diesem Zusammenhang macht, grenzt schon
fast an schwarze Magie (also ich meine meine Feststellungen von oben
bezüglich differenter und inkonsistenter Interpretation von 1)...

Viele Grüsse

Philipp