Stefan Einspender: Zufälligen Eintrag anzeigen - MySQL 5.0.27

Beitrag lesen

Hi,

»» SELECT YEAR(date), COUNT(*) FROM table GROUP BY 1 ORDER BY 1;

Willst du da nicht lieber über das Jahr gruppieren?

mache ich doch? Also mit GROUP BY 1 gruppiere ich noch nach YEAR(date)?

Das geht nur bei MySQL, aber das ist kein echter Zufall sondern nur irgendein Wert, der da grad rumliegt. Nimm einfach die Dateinamensspalte in die Select-Klausel.

Ja, was da rauskommt ist Unfug. Scheinbar immer der erste Datensatz, wo
das Jahr gerade passt. Nicht zu gebrauchen.

Vielleicht geht es mit einer korrelierten Unterabfrage, mit der du für das (gruppierte) Jahr alle Dateinamen nimmst, diese nach Zufall sortierst (ORDER BY RAND()) und mit LIMIT 1 einen davon auswählst. Diese Subquery stellst du als weiterte Spalte in die Select-Klausel.

OK, funktioniert. Aktuell habe ich da nur das Problem, dass die Performance
ganz böse in den Keller geht. Aus 0,0014 Sekunden werden dann plötzlich mehr
als 0,2 Sekunden Laufzeit, geht natürlich nicht. Aber mit der Datenbank-
Optimierung beschäftige ich mich andermal, aktuell geht es erstmal um die
rein programmiertechnische Umsetzung. Und wenn, was nicht ausgeschlossen
ist, die ganze Sache eh noch auf PostgreSQL umgestellt wird, dann brauche
ich ja jetzt nicht die Datenbank-Performance optimieren.

Viele Grüße,
Stefan