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:
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
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