[mysql] letzten 10 einträge ASC-sortiert?

Warum nicht so ?

Code:
(SELECT * FROM table WHERE bildID=10 ORDER BY Datum DESC LIMIT 10) ORDER BY Datum ASC

Wobei Datum wieder in der Abfrage enthalten sein sollte, als Feld. :roll:
 
Warum nicht so ?

Code:
(SELECT * FROM table WHERE bildID=10 ORDER BY Datum DESC LIMIT 10) ORDER BY Datum ASC

Wobei Datum wieder in der Abfrage enthalten sein sollte, als Feld. :roll:

Wäre ich vorsichtig mit... das ganze scheint aus dem Syntax einer UNION Abfrage zu kommen, aber ist nicht dokumentiert. Hab das grade mal aus intresse getestet unter Linux mit Mysql 5.0.18 funktioniert das ganze bei mir nicht, das letzte ORDER BY wird ignoriert. Unter Windows mit Mysql 5.0.24 gehts aber.

Ich würde einfach noch ein "SELECT * FROM" davor setzen und hinter die Klammer "AS irgendwas" und du hast nen normales Subselect. Und das ganze kostet bei 10 Datensätze nicht wirklich mehr als das ganze Clientseitig zu sortieren.
 
Ich würde einfach noch ein "SELECT * FROM" davor setzen und hinter die Klammer "AS irgendwas" und du hast nen normales Subselect. Und das ganze kostet bei 10 Datensätze nicht wirklich mehr als das ganze Clientseitig zu sortieren.

mit dem Problem das SubSelect in MySQL 5.0.x noch verdammt schlecht optimiert werden, das ganze gilt auch für views und storedprocedures
 
mit dem Problem das SubSelect in MySQL 5.0.x noch verdammt schlecht optimiert werden, das ganze gilt auch für views und storedprocedures

In der Form machen die SubSelects keine Probleme. Selbst bei Datenmengen von mehr als 100.000 DS kann man damit noch annehmbar Arbeiten. Das es massive performacne Probleme gibt wenn man ein SubSelect in WHERE oder SELECT verwendet weiß ich... da ist man selbst schon bei 10.000 DS schnell mal bei Ausführungszeiten jeinseits von gut und böse.

PS: Wir reden hier von 10 Datensätzen... da dauert am ende jede optimierung länger als die eigentlich Ausführung.
 
Wieso so kompliziert?

PHP:
$result = array();

$sql_result = mysql_query("SELECT foo, timestamp FROM bar WHERE foobar='sumthin' ORDER BY timestamp LIMIT 10");
while ($row = mysql_fetch_assoc($sql_result))
{
    array_unshift($result, $row);
}
mysql_free_result($sql_result);

echo '<pre>',print_r($result, true),'</pre>';
Und schon hat man direkt beim Auslesen die Einträge in die richtige Reihenfolge gebracht...