Mailinglisten-Archive |
Hallo Martin, Am Freitag, 4. Mai 2007 schrieb Martin Walper: > ich weiß das dies nicht unbedingt die richtige für mein Problem ist, > hoffe aber dennoch mir kann geholfen werden. kein Problem. :-) > Habe eine Mysql -Tab mit folgenden Feldern > > id(P), indate(int[YEARMONTH]), lcbid(FK), votes(int) > 1 200703 2 16 > 1 200703 3 13 > 1 200703 6 17 > 1 200704 3 10 > 1 200704 4 19 > 1 200704 2 16 > 1 200705 1 13 > 1 200705 2 17 > 1 200705 3 10 > 1 200705 4 19 > ..... > > nun brauch ich die lcbid mit dem höchsten votes des monats, geordnet > nach Monat maximal 12 > > später kommt noch ein join auf die lcb tabelle aber das soll jetzt > erstmal nicht das Problem sein. > > habe es soweit dies > > SELECT l.indate , l.lcbid, l.votes FROM lcb_vote l > GROUP BY l.indate > ORDER BY l.indate DESC > LIMIT 12 > > jetzt fehlt nur noch irgendwas wie max(votes) weiß aber leider nicht > was. Ungetestet müßte es aus meiner Sicht in etwas so aussehen, wenn man davon ausgeht, daß die Kombination indate und lcbid jeweils nur einmal vorkommen kann: SELECT DISTINCT v.indate, v.lcbid, v.votes FROM lcb_vote AS v ORDER BY v.indate DESC, v.votes DESC; Du kannst jetzt noch ein "LIMIT 0, 12" anhängen, um die gesammte Trefferzahl auf 12 zu begrenzen. Allerdings ist mir keine Lösung bekannt, innerhalb eines SELECTS zu bestimmten, daß maximal so und so viele Ergebniszeilen pro Wert in v.indate gezogen werden sollen. In diesem Fall müßtest Du wohl entweder ein SELECT pro Monat machen oder hinterher bei der Ausgabe im PHP-Skript entsprechend ansetzen. Eventuell müßtest Du Deine Aufgabe etwas präziser beschreiben. Deine obige Beschreibung läßt etwas Interpretationsspielraum hinsichtlich dessen, was Du als Ergebnis haben möchtest. Viele Grüße Lutz
php::bar PHP Wiki - Listenarchive