mysql Immer nur die jeweils 3 höchsten Werte der Gruppen addieren.

Thomas-

Grünschnabel
Hallo Leute,

ich habe zwei Tabellen.

Tabelle1
tippspiel_2009_tipppunkte
gp_id, user_ID, tipp_punkte
AUS, 17, 30
BAH, 17, 26
CHI, 17, 4
AUS, 18, 13
BAH, 18, 6
GER, 18, 14
AUS, 19, 33
BAH, 19, 26
GER, 19, 4
AUS, 20, 31
TUE, 20, 21
GER, 20, 14
BRA, 21, 2
GER, 21, 6
TUE, 22, 9

Tabelle 2:
tippspiel_2009_user
user_ID, user_name,syndicate_id
17, Ernst, 8
18, Fred, 3
19, EinToller, 4
20, Achim, 4
21, Bernd, 4
22, Hans, 4

Ich möchte immer die 3 höchsten ges_punkte zusammenzählen und der syndicate_id zuordnen, diese dann noch nach der syndicate_id sortieren.
user_ID<10 sowie syndicate_id<1 soll ausgeschlossen werden. Die ges_punkte werden bereits ausgerechnet.

Meine derzeitige Abfrage:
Code:
SELECT syndicate_id, sum( ges_punkte ) AS syn_punkte
FROM (
  SELECT u.syndicate_id, u.user_name, IFNULL( sum( punkte.tipp_punkte ) , 0 ) AS ges_punkte
  FROM tippspiel_2008_tipppunkte AS punkte
  LEFT JOIN tippspiel_2008_user AS u
  USING ( user_ID )
  WHERE u.user_ID >9
  GROUP BY u.user_ID
  ORDER BY ges_punkte DESC
)points
WHERE syndicate_id >0
GROUP BY syndicate_id
ORDER BY syn_punkte DESC

Das Problem hierbei ist ich rechne alle ges_punkte zusammen, ich will aber halt nur aus jeder Gruppe die 3 maimalen Werte.

Ergebnis sollte dann in etwa so aussehen.

syndicate_id, syn_punkte
4, 138
8, 60
3, 33

jetzt ist es
syndicate_id, syn_punkte
4, 146
8, 60
3, 33

Ich befürchte fast, mysql kann das nicht allein und man wird mit php nachhelfen müssen.

Gruß Thomas
 

Neue Beiträge

Zurück