Hallöchen!
Ich steht im Moment total aufm Schlauch, vielleicht kann mir ja jemand einen Denkanstoss geben... ;)
Folgende Situation: es geht um ein Spiel, in dem über mehrere Runden die Teilnehmer Punkte bekommen. Die Abfrage der Gesamtpunktzahl, Spitzenreiter der jeweiligen Runde, höchste erreichte Punktzahl usw. ist ja auch kein Problem.
Hier mal der (sehr) vereinfachte Tabellenaufbau:
+=======+========+========+
| SPIEL | NAME | PUNKTE |
+=======+========+========+
| 1 | Bernd | 8 |
+-------+--------+--------+
| 2 | Bernd | 2 |
+-------+--------+--------+
| 3 | Bernd | 10 |
+-------+--------+--------+
| 4 | Bernd | 4 |
+-------+--------+--------+
| 5 | Bernd | 1 |
+-------+--------+--------+
| 6 | Bernd | 3 |
+-------+--------+--------+
| 7 | Bernd | 9 |
+-------+--------+--------+
| 1 | Klaus | 9 |
+-------+--------+--------+
| 3 | Klaus | 4 |
+-------+--------+--------+
| 5 | Klaus | 2 |
+-------+--------+--------+
| 7 | Klaus | 0 |
+-------+--------+--------+
| 1 | Stefan | 3 |
+-------+--------+--------+
| 2 | Stefan | 2 |
+-------+--------+--------+
| 3 | Stefan | 7 |
+=======+========+========+
Nun möchte ich allerdings für jeden Mitspieler die Punkte der letzten 3 Runden, die dieser mitgespielt hat, zusammenaddiert anzeigen.
Also nicht die 3 letzten Runden allgemein (7,6,5), sondern für jeden einzelnen Mitspieler (Bernd -> 7,6,5, Klaus 7,5,3, Stefan 3,2,1).
Als Ergebnis hätte ich also gerne eine Tabelle, die mir die Punkte, der jeweils letzten 3 mitgespielten Runden anzeigt (keine Gesamtpunktzahl !), also sowas wie:
+==================+
| ERREICHTE PUNKTE |
+==================+
| Bernd | 13 |
+--------+---------+
| Stefan | 12 |
+--------+---------+
| Klaus | 6 |
+==================+
Ich hab's dann mal auf folgende Weise probiert, klappt aber nicht:
SELECT t.benutzer, SUM(t.punkte) AS punkte
FROM test t
WHERE t.spiel IN
(
SELECT q.spiel
FROM test q
WHERE q.benutzer = t.benutzer
ORDER BY q.spiel
LIMIT 3
)
GROUP BY t.benutzer
ORDER BY punkte DESC
LIMIT darf man wohl nicht in einem Subquery verwenden... :(
So, meine Frage nun:
Wie kann man's noch lösen? Geht's eigentlich überhaut in einer einzigen Abfrage? Oder muss ich mit einer temporären Tabelle arbeiten?
Vielen Dank schon mal,
paulbrause