phpbar.de logo

Mailinglisten-Archive

[php] [1/2 OT] Mysql Query

[php] [1/2 OT] Mysql Query

Lutz Zetzsche Lutz.Zetzsche at sea-rescue.de
Fre Mai 4 16:14:41 CEST 2007


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