Problem mit subquery

Nemesis

Nemesis

N3RD
Hi
ich möchte über eine Abfrage die aktuellsten 5 Einträge nach Datum sortiert ausgeben lassen.

die SQL-Abfrage lautet:
PHP:
SELECT CONCAT(Date_format(DATUM, '%d. '), Month.Monat, Date_format(DATUM, ' %Y') ) as Datum, News.NEWS as News 
FROM (SELECT DATUM, NEWS FROM News ORDER BY 1 DESC LIMIT 5) 
INNER JOIN Month ON Date_format(DATUM, '%m.')=Month.Number ORDER BY 2 DESC, 1 ASC;
Ich bekomme aber die Fehlermeldung "ERROR 1248 (42000): Every derived table must have its own alias".
Ich denke, dass er da ein Problem mit der Subquery hat.

Wie kann ich das am besten lösen ?

Danke !
 
(Wieso nutzt Du denn den alten Thread nicht weiter?)

Du musst dem Subquery einen Namen geben. Steht doch da. :D

Hier mal ein Beispiel:
Code:
mysql> SELECT * FROM (select * from log_traffic order by date desc limit 0,5) as tbl order by date; 
+------------+----------+----------+---------------------+
| date       | incoming | outgoing | last_edit           |
+------------+----------+----------+---------------------+
| 2009-10-21 |    85.73 |    61.93 | 2009-10-21 23:58:02 |
| 2009-10-22 |     12.9 |    78.13 | 2009-10-22 23:58:01 |
| 2009-10-23 |    16.15 |    85.73 | 2009-10-23 23:58:02 |
| 2009-10-24 |    11.99 |   143.04 | 2009-10-24 23:58:01 |
| 2009-10-25 |    13.45 |   105.16 | 2009-10-25 22:28:02 |
+------------+----------+----------+---------------------+
5 rows in set (0.00 sec)
Das gibt die 5 letzten Einträge aus log_traffic aus, und sortiert nach Datum von klein nach groß.

Lässt man das alias weg:
Code:
mysql> SELECT * FROM (select * from log_traffic order by date desc limit 0,5) order by date;
ERROR 1248 (42000): Every derived table must have its own alias

@devilz
Die Schriftart im Codetag ist immer noch der letzte mist. ;)
 
Zuletzt bearbeitet:
hm, ok, jetzt klappts danke ... warum ein neuer thread ? naja weils ein neuen problem ist, und wenn wer danach sucht findet ers so leichter ;-)

jetzt hab ich noch das problem, dass er mir das datum falsch sortiert:
Code:
17. Februar 2010
15. Februar 2010
13. Februar 2010
08. Februar 2010
01. März 2010

richtig wäre:
Code:
08. Februar 2010
13. Februar 2010
15. Februar 2010
17. Februar 2010
01. März 2010
 
Code:
SELECT * FROM (select * from log_traffic order by date desc limit 0,50) as tbl [B]order by MONTH(date), DAY(date)[/B];
So? Das Fett markierte ist das interessante.
 

Ähnliche Themen

mysql Select Abfrageergebnis in unterschiedlichen Variablen sichern

dovecot und postfix Konfiguration Problem

MySQL Abfrage mit TOP und CONCAT

Samba 4 Gast Zugang unter Ubuntu funktioniert nicht

Akonadi startet nicht mehr

Zurück
Oben