Neuesten Datensatz aus Datenbank holen

Halpha

Erfahrenes Mitglied
Hi,

und zwar hab ich folgendes Problem, ich schreibe gerade ein kleines News System und da möchte ich jetzt auf einer seite nur die aktuellste News also die mit dem aktuellstem Datum anzeigen lassen, ich dacht mir dann erst so ich machs über die id:

Code:
$sql = "SELECT title, datum, text, bild FROM TABLE_PREFIX_news WHERE ID ='1';";

Dann ist mir eingefallen, die aktuellste hat ja trotzdem dann ne höhere id, also klappt das nicht, jetzt wär ich auf das Datum gekommen, nur wie bau ich das ein dass der im Grunde nur den Datensatz auswähl der vom Datum am aktuellsten ist?

wär cool wenn jemand eine Antwort dafür wisst.

Mfg

Halpha
 
wird als date gespeichert, wär mir auch lieber gewesen nur wenn date nicht funktioniert muss ich Timestap nehmen, oder weiß jemand ne Lösung für Date?

mfg
 
ggf performanter ist es ohne limit

SQL:
SELECT title, datum, text, bild
FROM TABLE_PREFIX_news
WHERE id IN (SELECT MAX(id) FROM TABLE_PREFIX_news);
 
Zuletzt bearbeitet von einem Moderator:
Man müsste es testen und es kommt auch auf Indexe raus. Subqueries die alleine auf einem Index basieren sind aber aus meiner Erfahrung meisens schneller als zuerst einen Fullscan zu machen und diesen anschliessend zu sortieren.

Es ist eine der mir bekannten Möglichkleiten zur Performance-Verbesserung, dass man mittels Subquery möglichst die Datenmenge reduziert bevor man die endgültigen Daten ausliest.

Es kommt auch auf die Tabellengrösse drauf an.

Probiers mal mit einer Grossen Tabelle aus.
 
Ich denke, man sollte das nicht pauschalisieren, sondern schön mit EXPLAIN prüfen, ob das auch tatsächlich so ist.

Von welcher Tabellen-Größe reden wir?
 
Ich denke, man sollte das nicht pauschalisieren, sondern schön mit EXPLAIN prüfen, ob das auch tatsächlich so ist.
Ganz meine Meinung. Darum stand in meinem Beitrag auch ggf.

Es ist einfach ein Gedankenansatz, der in eingen SQLs zu Performance-Verbesserung führen kann.

Nachtrag:
Ein ähnliches Beispiel ist sogar in der MySQL-Doku drin.
http://dev.mysql.com/doc/refman/5.1/de/example-maximum-column-group-row.html
3.6.4. Die Zeilen, die das gruppenweise Maximum eines bestimmten Felds enthalten

Aufgabe: Ermitteln Sie für jeden Artikel den oder die Händler mit dem höchsten Preis.

Dieses Problem lässt sich mit einer Unterabfrage wie der folgenden lösen:

SQL:
SELECT artikel, haendler, preis
FROM   shop s1
WHERE  preis=(SELECT MAX(s2.preis)
              FROM shop s2
              WHERE s1.artikel = s2.artikel);
 
Zuletzt bearbeitet von einem Moderator:
Zurück