Announcement

Collapse
No announcement yet.

Abfrage nach neuestem Eintrag

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Abfrage nach neuestem Eintrag

    Hallo zusammen,

    gibt es die Möglichkeit eine SQL Abfrage nach aktuellstem Stand abzufragen.
    Ich bekomme bei der Auswertung 3 verschiedene Ergebnisse zu 3 verschiedenen Zeitpunkten.
    Und nun wollte ich nur die Ergebnisse zum letzten Zeitpunkt aufgeführt bekommen.

    Grüße
    ExecuteD

    EDIT: Select MAX Zeitpunkt?

    Um es zu spezifizieren.
    Es sollen nur das "Ergebnis" zum aktuellsten Zeitpunkt der Person angezeigt werden.

    Select MAX Zeitpunkt gibt ja nur den aktuellsten Zeitpunkt aus
    Zuletzt editiert von ExecuteD; 26.03.2009, 13:15.

  • #2
    Hallo ExecuteD,

    die Möglichkeit gibt es prinzipiell schon; hängt aber von nicht genannten Tabelledesign ab.
    Was ist den der gleiche Nenner für die Datensätze; sprich woran kann man ausmachen, das die genannten 3 Datensätze zusammengehören?
    Olaf Helper

    <Blog> <Xing>
    * cogito ergo sum * errare humanum est * quote erat demonstrandum *
    Wenn ich denke, ist das ein Fehler und das beweise ich täglich

    Comment


    • #3
      Die ID der Person.

      Es soll also zu einer ID der aktuellste Wert als Ergebnis ausgegeben werden
      Zuletzt editiert von ExecuteD; 26.03.2009, 13:38.

      Comment


      • #4
        Hallo,

        ein einfaches Select mit MAX() und GROUP BY sollte doch dafür ausreichen!?

        Gruß Falk
        Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

        Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

        Comment


        • #5
          Tatsächlich.
          Nun hab ich nur noch 2 unterschiedliche Werte.
          Davor hat sich das gedoppelt.
          Ich benutze zwar einen SELECT DISTINCT aber dass bringts auch nichts.

          Meine Abfrage lautet in diesem Sinne
          SELECT DISTINCT PID, Wert, max (Zeitpunkt) FROM Tabelle GROUP BY PID, Zeitpunkt

          Hab sie grad nicht vor mir aber vom Prinzip sollte es so sein

          Comment


          • #6
            Ein DISTINCT filter nur die eindeutigen Datensätze heraus; da Du unterschiedliche "Zeitpunkt" Daten hast, ist auch kein Datensatz eindeutig.

            Dein Statement sollte so eigentlich auch nicht funktionieren dürfen, da es eigentlich falsch ist. Felder aus dem SELECT Statement, die nicht aggregiert werden, müssen auch im GROUP BY aufgeführt werden; im Fall von "Wert" ist das nicht der Fall. Wenn ich das in dem einen oder anderen Thread richtig mitkommen habe, gibt es eine alte MySql Version, die sowas implizit trotzdem macht.
            Und da Du "Zeitpunkt" aggregierst, macht es hier keinen Sinn, es noch im GROUP BY aufzuführen; dann bekommst Du wieder jeden Zeitpunkt einzeln.
            Es müsste eigentlich so sein:
            [highlight=SQL]SELECT PID, Wert, max (Zeitpunkt)
            FROM Tabelle
            GROUP BY PID, Wert[/highlight]
            Olaf Helper

            <Blog> <Xing>
            * cogito ergo sum * errare humanum est * quote erat demonstrandum *
            Wenn ich denke, ist das ein Fehler und das beweise ich täglich

            Comment


            • #7
              Ich hab in der Abfrage noch ein weiteres Feld.
              Dass benutze ich ähnlich wie bei einem Online Shop in einer Bestelltabelle einem Kunden zu einer Bestellung zuzuordnen.
              Ich nenne sie mal FallNummer.
              Mit meiner und deiner (O. Helper) Abfrage bekomme ich das gleiche Ergebnis.
              Es kommen einige IDs & FallNummern doppelt vor

              ID Wert FallNummer Zeitpunkt
              132|rot |99543201 |01-01-2009
              132|grün |99543201 |02-01-2009

              Ich will dabei nur den aktuellsten Wert somit den unteren.
              Was einfache Dinge angeht bin ich in SQL eigentlich recht fit, aber da hab ich grad etwas dran zu knacken.

              Comment


              • #8
                Originally posted by ExecuteD View Post
                Ich hab in der Abfrage noch ein weiteres Feld.
                Dass benutze ich ähnlich wie bei einem Online Shop in einer Bestelltabelle einem Kunden zu einer Bestellung zuzuordnen.
                Ich nenne sie mal FallNummer.
                Mit meiner und deiner (O. Helper) Abfrage bekomme ich das gleiche Ergebnis.
                Es kommen einige IDs & FallNummern doppelt vor

                ID Wert FallNummer Zeitpunkt
                132|rot |99543201 |01-01-2009
                132|grün |99543201 |02-01-2009

                Ich will dabei nur den aktuellsten Wert somit den unteren.
                Was einfache Dinge angeht bin ich in SQL eigentlich recht fit, aber da hab ich grad etwas dran zu knacken.
                Wenn mysql sowas unterstützt...
                [HIGHLIGHT="SQL"]
                SELECT PID, Wert, Zeitpunkt
                FROM Tabelle a
                JOIN (SELECT PID, max (Zeitpunkt) AS Zeitpunkt
                FROM Tabelle GROUP BY PID
                ) AS X ON X.PID = A.Pid and x.Zeitpunkt = A.Zeitpunkt [/HIGHLIGHT]

                Comment


                • #9
                  Meine Datenquelle ist dabei ein View welches aus mehreren Tabellen bereits gejoined ist.
                  Somit ist der Join bereits im Vorfeld aktiv.
                  Wie schaff ich es denn, dass er den aktuellsten Wert einer FallNummer benutzt?

                  Comment


                  • #10
                    Keine Ideen mehr?

                    Comment


                    • #11
                      Was gefällt Dir an der letzten Lösung von ebis nicht?
                      Olaf Helper

                      <Blog> <Xing>
                      * cogito ergo sum * errare humanum est * quote erat demonstrandum *
                      Wenn ich denke, ist das ein Fehler und das beweise ich täglich

                      Comment

                      Working...
                      X