mySQL Auswahl Problem

apfelkuechle

Erdapfel
Registriert
22.05.07
Beiträge
5
Hallo zusammen,

habe ein Problem mit einer mySQL query in mySQL 5. Habe schon das Netz leer gegrast aber komme einfach nicht auf die richtige Syntax.

Ich habe eine Tabelle mit den Feldern Quelle (int), Datum (Timestamp) und einem Wert (varchar). Die Tabelle wird in unregelmäßigen Abständen mit Daten aus verschiedenen Quellen gefüllt, das Datum dabei automatisch mit dem CURRENT_TIMESTAMP gefüllt.

Gibt es eine Möglichkeit sich in einer Query den zuletzt angelegten Datensatz einer Quelle anzeigen zu lassen?

So eine Art SELECT * FROM DT WHERE quelle='1' AND datum=MAX' oder so?

Vielen Dank schonmal für eure Unterstützung
 

zeno

Lane's Prinz Albert
Registriert
05.11.05
Beiträge
4.894
select * from dt where quelle='1' order by 'datum' desc limit 1

oder so ähnlich ;)
 

Nogger

Damasonrenette
Registriert
05.11.05
Beiträge
494
Index auf dem Datumsfeld nicht vergessen.
 

Hilarious

Gelbe Schleswiger Reinette
Registriert
10.08.05
Beiträge
1.759
Möchtest Du den zuletzt modifizierten Datensatz anzeigen, und nicht den zuletzt angelegten, was dann unterschiedliche sein kann, wenn Du einmal angelegte Daten später modifiziert hast (zum Beispiel per UPDATE), lohnt es sich, eine zusätzliche Spalte mit dem Datum der Erstellung anzulegen, welche dann ein Feld vom Typ DATETIME sein sollte. Bei dem ersten Einfügen (INSERT) eines Datensatzes müsstest Du nur darauf achten, dieses Feld mit einem passenden Datum zu befüllen (»NOW()«). So können Modifizierungszeitstempel variieren, trotzdem ist das Erstellungsdatum bekannt; ganz ähnlich zu einem Dateisystem.
 

ulukaii

Idared
Registriert
22.02.07
Beiträge
28
..., welche dann ein Feld vom Typ DATETIME sein sollte. Bei dem ersten Einfügen (INSERT) eines Datensatzes müsstest Du nur darauf achten, dieses Feld mit einem passenden Datum zu befüllen (»NOW()«).

Ja. gute Idee.

MySQL und bestimmt auch andere DBMS haben übrigens einen fiesen Seiteneffekt mit dem Typ TIMESTAMP. Übergibt man nämlich in einem INSERT oder UPDATE Statement Felder dieses Typs nicht, so werden diese mit dem akutellen Datum und Zeit gefüllt, auch wenn man es gar nicht angegeben hat.

Damit lässt sich natürlich gut das letzte Änderungsdatum festhalten, allerdings ist das ganze nicht in allen DBMS konsistent gelöst, also kein Standard.

Außerdem lassen sich DATETIME Felder i.d.R. einfacher auslesen. (Vorsicht: durch die Java-Brille betrachtet)
 

Hilarious

Gelbe Schleswiger Reinette
Registriert
10.08.05
Beiträge
1.759
Ja. gute Idee.

MySQL und bestimmt auch andere DBMS haben übrigens einen fiesen Seiteneffekt mit dem Typ TIMESTAMP. Übergibt man nämlich in einem INSERT oder UPDATE Statement Felder dieses Typs nicht, so werden diese mit dem akutellen Datum und Zeit gefüllt, auch wenn man es gar nicht angegeben hat.

Damit lässt sich natürlich gut das letzte Änderungsdatum festhalten, allerdings ist das ganze nicht in allen DBMS konsistent gelöst, also kein Standard.

Außerdem lassen sich DATETIME Felder i.d.R. einfacher auslesen. (Vorsicht: durch die Java-Brille betrachtet)

Naja, ich habe das mit dem TIMESTAMP so verstanden, dass es ein nützliches Feature ist (und kein Bug). ;)

Ich kann nebenbei beim Auslesen von Datumsfeldern eine Beschäftigung mit DATE_FORMAT empfehlen, was sehr viele flexible Daten-Formatierungen erlaubt. Und sollte das nicht reichen kann man auch mit UNIX_TIMESTAMP() arbeiten und im Controller dann umformen.