1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen
  2. Unsere jährliche Weihnachts-Banner-Aktion hat begonnen! Wir freuen uns auf viele, viele kreative Vorschläge.
    Mehr dazu könnt Ihr hier nachlesen: Weihnachtsbanner 2016

    Information ausblenden

mySQL Auswahl Problem

Dieses Thema im Forum "PHP & Co." wurde erstellt von apfelkuechle, 16.06.07.

  1. apfelkuechle

    apfelkuechle Erdapfel

    Dabei seit:
    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
     
  2. zeno

    zeno Lane's Prinz Albert

    Dabei seit:
    05.11.05
    Beiträge:
    4.898
    select * from dt where quelle='1' order by 'datum' desc limit 1

    oder so ähnlich ;)
     
  3. Nogger

    Nogger Damasonrenette

    Dabei seit:
    05.11.05
    Beiträge:
    494
    Index auf dem Datumsfeld nicht vergessen.
     
  4. Hilarious

    Hilarious Gelbe Schleswiger Reinette

    Dabei seit:
    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.
     
  5. apfelkuechle

    apfelkuechle Erdapfel

    Dabei seit:
    22.05.07
    Beiträge:
    5
    Ok, dass es so einfach wird hät ich auch nicht gedacht :) Vielen Dank
     
  6. ulukaii

    ulukaii Idared

    Dabei seit:
    22.02.07
    Beiträge:
    28
    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)
     
  7. Hilarious

    Hilarious Gelbe Schleswiger Reinette

    Dabei seit:
    10.08.05
    Beiträge:
    1.759
    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.
     

Diese Seite empfehlen