Anfängerfrage zu Subselects
Hi.
Folgendes:
Ich habe für ein Spiel eine Highscore-Tabelle, mit den Spalten:
id, name, score, date, max_level
Um die Platzierung eines Spielers zu berechnen, sortiere ich nach id und score (der mit mehr Punkten hat eine bessere Platzierung, bei Gleichstand der mit der kleineren id (der zuerst da war)).
Nun möchte ich von einem bestimmten Spieler jeweils die 4 Einträge von den Spielern haben, die in der Platzierung direkt davor und dahinter sind. Leider verheddere ich mich völlig bei der Syntax für die Abfrage.
Um an die Einträge der 4 nächstbesseren Spieler zu kommen wollte ich die Tabelle wieder zunächst nach id und score sortieren, und alle Einträge von den Spielern auswählen, die besser sind als der um den es sich dreht. Von dieser Auswahl dann die 4 schlechtesten Einträge.
Das gleiche dann praktisch umgekehrt für die 4 nächstschlechteren Spieler.
Also mit folgender Abfrage komme ich ja an alle Spieler mit ner höheren Platzierung (angenommen der Spieler um den es sich handelt hat 1000 Punkte und seine ID lautet 8)
SELECT name, score, max_level
FROM `Highscore_Table`
WHERE score > 1000 OR (score = 1000 AND id < 8)
ORDER BY SCORE DESC, ID ASC
Davon müßte ich ja jetzt nur die 4 schlechtesten auswhlen.
SELECT name, score, max_level
FROM (
SELECT name, score, max_level
FROM `Highscore_Table`
WHERE score > 1000 OR (score = 1000 AND id < 8)
ORDER BY SCORE DESC, ID ASC
)
ORDER BY SCORE ASC, ID DESC, LIMIT 4
Klappt aber so nicht wegen "Every derived table must have its own alias".
Ich wäre wirklich dankbar wenn mir jemand sagen könnte, wir die Abfrage korrekt aussehen müßte.
Danke und mfG
Geändert von knautschke (18.12.2008 um 12:49:35 Uhr)
|