Announcement

Collapse
No announcement yet.

Zeilen zusammenfassen mit SQL

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

  • Zeilen zusammenfassen mit SQL

    Hallo,

    ich habe folgendes Problem: in meiner Tabelle werden die Datensätze mit einer forlaufenden ID und einer ID, die aus einer anderen Tabelle kommt, geschrieben.
    Die Tabelle sieht zusammengefasst so aus:

    id | id_datensatz | bezeichnung | createtime
    1 | 1001 | test | 03.03.2011
    2 | 1001 | test2 | 04.03.2011
    3 | 1002 | hier | 02.03.2011
    4 | 1001 | spaß | 07.03.2011
    5 | 1002 | tier | 05.03.2011

    Mit einer Abfrage möchte ich nun nach den "id_datensatz" gruppieren und smoit den Datensatz bekommen, der innherhalb der Grupierung das höchste (letzte Änderung) createtime hat.
    Für das Beispiel möchte ich folgendes bekommen:
    4 | 1001 | spaß | 07.03.2011
    5 | 1002 | tier | 05.03.2011

    Meine bisherige SQL-Abfrage:

    PHP Code:
    SELECT * , maxcreatetime )
    FROM `tabelle`
    GROUP BY id_datensatz 
    Nur das max createtime wäre kein Problem, jedoch möchte ich dann auch zu dem passenden Datensatz die entsprechenden Werte haben. Leider komme ich hiermit nicht vorran. Vielleicht kann mir jemand mit meinem Problem helfen!?

    Vielen Dank

  • #2
    Versuch mal[HIGHLIGHT="SQL"]SELECT Y.*
    FROM Tabelle AS Y
    JOIN
    ( SELECT id_datensatz
    , max( createtime ) AS MaxTime
    FROM `tabelle`
    GROUP BY id_datensatz
    ) AS X On X.id_datensatz = = Y.id_datensatz
    AND X.MaxTime = Y.Createtime[/HIGHLIGHT]

    Comment


    • #3
      http://jan.kneschke.de/projects/mysql/groupwise-max/
      Bei SQL-Code bitte beachten: Formatierung von SQL in Beiträgen

      Comment


      • #4
        Danke.
        Hier meine Lösung:

        PHP Code:
        SELECT t.*
        FROM tabelle AS t
        LEFT JOIN tabelle 
        AS t2 ON t.id_datensatz t2.id_datensatz AND t2.createtime t.createtime
        WHERE t2
        .id_datensatz IS NULL 

        Comment

        Working...
        X