Vinzenz Mai: SELECT bei phpBB-Forum (Beispiel)

Beitrag lesen

Hallo

Sollte eigentlich mit "group by post_id" und "having max(post_time)" klappen.

das ist meiner Meinung nach ein schlechter Ratschlag.

Bei mir hat es so bis jetzt immer geklappt. Darum bin ich davon ausgegangen, dass man das so macht, was offenbar ein Irrtum war.

Solches SQL akzeptiert nur MySQL. Nur unter bestimmten Bedingungen (die hier allerdings gegeben sein sollten) gibt es das gewünschte Ergebnis. Ich zitiere aus dem Handbuch:

In standard SQL, you would have to add customer.name to the GROUP BY clause. In MySQL, the name is redundant.

Heisst das nur, dass man statt "post_id" "Tabelle.post_id" schreiben sollte?

Nein, das heißt:

GROUP BY
    post_id,
    topic_title,
    topic_views

(natürlich mit qualifizierten Spaltennamen)

Diese beiden Saetze verstehe ich ueberhaupt nicht:

Lies bitte den gesamten Abschnitt:
http://dev.mysql.com/doc/refman/5.0/en/group-by-hidden-fields.html.

Genau dieses "Do not use this feature ..." führt hier im Forum zu ständigen Fragen, weil es mißachtet wird. Ich persönlich bevorzuge die Formulierung:

"Do not use this feature at all."

Gibt es eine elegantere Alternative dazu?

Für mich gibt es nichts eleganteres als syntaktisch korrekt nach allen Spalten zu gruppieren, auf die keine Aggregatsfunktion angewandt wird.

Eine kleine Auswahl an Archivthreads, -postings zu dem Problem:

</archiv/2005/9/t114802/#m732596>
</archiv/2005/8/t114337/#m728686>
</archiv/2005/7/t111779/#m704775>
</archiv/2005/5/t108614/#m676691>
</archiv/2006/3/t126470/#m815637>
</archiv/2006/4/t128026/#m826492>
</archiv/2006/7/t133015/#m861544>
</archiv/2006/8/t134684/#m873861>
</archiv/2006/9/t136102/#m883661>

Freundliche Grüße

Vinzenz