2-fache Sortierung einer Abfrage mit LIMIT

Martys

Erfahrenes Mitglied
Hallo zusammen,

komme gerade nicht weiter. Ich habe ein DB mit den Feldern id, datum, name, status.
Daraus möchte ich die 10 aktuellsten Einträge bzw. aktualisierten Einträge ("datum") abfragen und dann alphabetisch nach "namen" sortieren lassen.

Mein Ansatz
PHP:
$sql = "SELECT id, datum, name, status FROM benutzer WHERE status=1 ORDER BY datum DESC, name ASC LIMIT 10";
liefert nicht das gewünschte Ergebnis. Wenn ich bei "datum" das DESC weglasse werden nicht die 10 "aktuellsten" ausgelesen.

Hat jemand eventuell einen Tipp für mich.

Danke schon mal,
Martys
 
Hi,

dass das nicht das gewünschte Ergebnis liefert, ist klar, da nach Name nur Datensätze mit gleichem Datum sortiert werden.
Das kannst Du nur mit einer Unterabfrage lösen:

Code:
SELECT * FROM (
   SELECT id, datum, name, status FROM benutzer 
      WHERE status=1 
      ORDER BY datum DESC
      LIMIT 10
   )
   ORDER BY name ASC

LG
 
Hallo und danke für deine Antwort.
Unterabfragen kannte ich noch gar nicht.

Habe den Vorschlag ausprobiert, er liefert folgende Fehlermeldugn zurück:
Every derived table must have its own alias

Habe daraufhin die Abfrage um den Tabellennamen erweitert:
PHP:
SELECT * FROM benutzer ( 
	SELECT id, datum, name, status FROM benutzer 
		WHERE status=1 
		ORDER BY datum DESC 
		LIMIT 10 
	) 
	ORDER BY name ASC

Dies ändert in folgender Fehlermeldung:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '( SELECT id, datum, name, status FROM benutzer ' at line 1

MySQL-Version 5.0.67

Habe schon in der Doku nachgesehen, kann den Fehler aber leider nicht finden.
 
Hi,

Code:
SELECT * FROM ( 
    SELECT id, datum, name, status FROM benutzer 
        WHERE status=1 
        ORDER BY datum DESC 
        LIMIT 10 
    ) t
    ORDER BY name ASC

LG
 
Vielen Dank, unter MySQL 5 funktioniert es, leider nicht auf dem Produktiv-Server, der hat noch Version 4.0.27 :(
 
Hi,

wenn möglich, solltest Du den Server updaten oder wechseln. MySQL4 ist veraltet und wird nicht mehr weiterentwickelt.
Ansonsten sehe ich keine andere Möglichkeit, als die gefundenen 10 Datensätze per PHP umzusortieren.

LG
 
Ok, ist ein Shared-Server und ich habe da keine Entscheidungsgewalt :(
Trotzdem danke, werde dann mit PHP umsortieren.
 
Zurück