FotoManie: mehrfach zwischen 2 festen Werten wechseln

Das Problem

Eine Tabelle mit unter anderem den Spalten Datum und Status

ein Auschnitt sähe so aus:

Datum / Status
-------------------------
2008-11-11 12:00:00 / 102
2008-11-11 13:00:00 / 102
2008-11-11 14:00:00 / 103
2008-11-11 15:00:00 / 103
2008-11-11 16:00:00 / 102
2008-11-11 17:00:00 / 102
2008-11-11 18:00:00 / 102
2008-11-11 19:00:00 / 103
-------------------------

Was muss ich abfragen um nur je den Datensatz zu bekommen, an dem der Status wechselt? Also nicht einen sondern die gesamten Wechsel...

Das Ergebnis des Beispiels sollte also ergeben:

Datum / Status
-------------------------
2008-11-11 12:00:00 / 102
2008-11-11 14:00:00 / 103
2008-11-11 16:00:00 / 102
2008-11-11 19:00:00 / 103
-------------------------

Im Moment lese ich alle ein (mysql -> python script)
Dann laufe ich in einer Schleife durch die Einträge und übernehme nur jeweils den, an dem der Status auf einen abweichenden Wert zum Vorgänger wechselt.

Das kann aber nicht die endgültige Lösung sein.

Wie muss das sql-statement hierzu aussehen? geht das überhaupt?

Jemand ne Idee?

lg manfred

  1. Moin

    Versuch mal die Abfrage mit
    SELECT DISTINCT(Status),Datum FROM Tabelle
    oder per
    GROUP BY
    sollte es auch funktionieren. Natürlich noch per
    SORT BY Datum
    sortieren und dann solltest du die gewünschten Ergebnisse erhalten.

    Gruß Bobby

    --
    -> Für jedes Problem gibt es eine Lösung, die einfach, sauber und falsch ist! <-
    -> Nicht das Problem macht die Schwierigkeiten, sondern unsere Sichtweise! <-
    ie:{ br:> fl:{ va:} ls:< fo:) rl:( n4:( de:> ss:) ch:? js:( mo:} sh:) zu:)
    1. Moin

      Versuch mal die Abfrage mit
      SELECT DISTINCT(Status),Datum FROM Tabelle
      oder per
      GROUP BY
      sollte es auch funktionieren. Natürlich noch per
      SORT BY Datum
      sortieren und dann solltest du die gewünschten Ergebnisse erhalten.

      Gruß Bobby

      bei distinct bekomme ich je ein einziges mal die 102 und 103 zu einem datumswert. da die zeitlich auseinader liegen ändert sich hier nichts.
      die tabelle bleibt wie gehabt, da jede dieser kombinationen einmalig vorkommt.

      bei group by gibts je einmal den statuswert und ein dazugehöriges datum.

      so einfach ist es leider nicht.

      haben schon einiges probiert.

  2. yo,

    Was muss ich abfragen um nur je den Datensatz zu bekommen, an dem der Status wechselt? Also nicht einen sondern die gesamten Wechsel...

    geht mit unterabfragen, mysql unterstützt diese aber erst seit 4.1 und höher. desween wäre es interessant zu wissen, welche version dein server hat. mich wundert ein wenig der erste eintrag in deiner ergebnisliste, weil dort kein wechsel stattgefunden hat, er einfach nur der "jüngste" datensatz ist.

    Ilja