Doppelte Sortierung!?

Ich hab eine kleine Denkblockade bei folgendem Problem. Ich habe eine Datenbanktabelle in der es u.a. die Felder ‘word’ und ‘points’ gibt.

Es sollen die 3 Einträge mit den meisten ‘points’ abgefragt werden. Soweit kein Problem mit “ORDER BY points DESC LIMIT 3”. Aber sie sollen auch in alphabetischer Reihenfolge (bzgl dem Feld ‘word’) zurückgegeben werden.


Beispiel:
word, points
Bär, 12
Affe, 32
Falke, 38
Esel, 17
Chamäleon, 2
Dromedar, 35


Soll folgendes zurückgeben:
word, points
Affe, 32
Dromedar, 35
Falke, 38

Ich habe schon folgendes versucht:

ORDER BY points DESC, word LIMIT 3

Aber dann kommen zwar die 3 Datensätze mit den meisten ‘points’, aber sie sind nicht nach ‘word’ sortiert.

Ist das überhaupt mit einer SQL-Abfrage realisierbar?
Hoffe ich konnte gut erklären was ich möchte.
Danke im Voraus!

Wer Fipptehler findet, darf sie behalten:

test=*# select * from points ;
   word    | poits
-----------+-------
 Bär       |    12
 Affe      |    32
 Falke     |    38
 Esel      |    17
 Chamäleon |     2
 Dromedar  |    35
(6 rows)

Time: 1.031 ms
test=*# select word, poits from (select word, poits from points order by poits desc limit 3) foo order by word asc;
   word   | poits
----------+-------
 Affe     |    32
 Dromedar |    35
 Falke    |    38
(3 rows)

Der ‘Trick’ ist quasi eine versteckte Unterabfrage, die die 3 Records mit den größten ‘poits’ liefert, diese Menge wird dann sortiert.

Andreas

thumbs up Danke