SELECT: AUsgabe der jeweils aktuellsten Records

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • SELECT: AUsgabe der jeweils aktuellsten Records

    Ich habe eine MySQL Tabelle, bestehend aus den Felder "name", "zeit" und "wert".

    Ich suche nach einem Select der es ermöglicht je "name" alle Records auszugeben, die jeweils dem jüngsten Zeitwert zuzuordnen sind.
    (Nur die aktuellsten Records sind auszugeben)

    Jemand eine Idee? Ich habe schon einiges probiert mit max() concat(), bekomme es aber nicht auf die Reihe.

    Code:
    Inhalt der Tabelle:
    +---------+---------------------+------+
    | name    | zeit                | wert |
    +---------+---------------------+------+
    | Hans    | 2001-05-14 16:12:04 |    1 |
    | Hans    | 2001-05-15 15:14:01 |    2 |
    | Peter   | 2001-05-15 15:14:01 |    1 |
    | Franz   | 2001-05-15 15:14:01 |    2 |
    | Franz   | 2001-11-03 14:28:11 |    1 |
    | Franz   | 2001-11-07 16:25:08 |    3 |
    | Franz   | 2001-12-14 16:55:52 |    5 |
    | Franz   | 2001-12-14 16:55:52 |    1 |
    +---------+---------------------+------+
    
    Gewünschtes Resultat:
    +---------+---------------------+------+
    | name    | zeit                | wert |
    +---------+---------------------+------+
    | Hans    | 2001-05-15 15:14:01 |    2 |
    | Peter   | 2001-05-15 15:14:01 |    1 |
    | Franz   | 2001-12-14 16:55:52 |    5 |
    | Franz   | 2001-12-14 16:55:52 |    1 |
    +---------+---------------------+------+
    MySQL 3.23.46 (ab 3.24 gibt es erst Subselect-Funktionaliät)

    [Editiert von hand am 24-02-2002 um 10:58]

  • #2
    Probiers mal mit

    SELECT * FROM tablle ORDER BY zeit DESC

    Gruß
    webwiese

    Kommentar


    • #3
      wohl doch eher
      select * from TABELLE order by ZEIT desc group by NAME
      mein Sport: mein Frühstück: meine Arbeit:

      Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

      Kommentar


      • #4
        Nein, nein, leider so simpel ist das leider nicht.
        Ich möchte nur die jeweils jüngsten Records je Name herausgefiltert haben.

        Das müßte irgendwie mit JOINs zu formulieren sein ?
        Aber ein JOIN mit ein und derselben Tabelle?
        Ob das überhaupt mit einem Select funktioniert?

        [Editiert von hand am 24-02-2002 um 21:01]

        Kommentar


        • #5
          join geht nur bei zwei oder mehr tabellen
          so sollte es gehen:

          select name, max(zeit),wert from tbl group by name
          Beantworte nie Threads mit mehr als 15 followups...
          Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

          Kommentar


          • #6
            Nein leider. Mit diesem Select bekomme ich immer nur einen Record, ein Name kann aber mehrere Records gleichen Zeitpunktes haben.

            Ich löse das jetzt mit zwei Selects:

            select name, max(zeit) as zeit from tbl group by name

            und mit dem Ergebnis gehe ich dann in einer Schleife
            die Records über den Index name und zeit lesen. Das funktioniert wenigstens.

            Danke an alle.

            Kommentar


            • #7
              Bin etwas spät dran.. Aber mit einem Self-Join?

              select * from tab one, tab two where one.name=two.name order by zeit desc

              CAT Music Files

              Kommentar


              • #8
                Original geschrieben von Sky
                select * from tab one, tab two where one.name=two.name order by zeit desc
                Im Prinzip möglich, aber da fehlt auch wieder das group, und ausserdem ist zeit nicht eindeutig:

                select one.*, max(two.zeit) as maxzeit from tab one, tab two where one.name=two.name and one.zeit=maxzeit group by one.name

                könnte funktionieren, wenn´s von den anderen Queries keine tut.

                Hach wär das SCHÖN, wenn mySQL endlich sub-selects verstehen würde!
                mein Sport: mein Frühstück: meine Arbeit:

                Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

                Kommentar

                Lädt...
                X