Michael: MySQL: Bei Abfrage einmal gefundene Datensätze überspringen

Hallo allerseits,

ich habe eine Tabelle unter anderem mit einer Spalte fürs Datum, die sich über mehrere Jahre und tausende Einträge erstreckt.

Nun möchte ich eine nach Monaten geordnete Index-Seite erstellen. Mein Ansatz bisher ist, dass die Datenbank geordnet nach dem Datum durchgegangen wird und die Abfrageschleife dann das jeweilige Datum wie etwa "2011-03" "2011-02" "2011-01" etc. ausgibt. Bisher löse ich das über die PHP-Abfrageschleife, ist ein Jahr-Monat einmal gefunden, werden alle folgenden identischen Sätze nicht mehr angezeigt.

Ist es möglich, diese Auswahl auf die Abfrage der Datenbank zu übertragen udn bereits dort schon so zu sortieren, dass sie weiterspringt, wenn ein Wert wie "2011-03" einmal gefunden worden ist?

Ich finde es komisch, wenn effektiv nur ein paar Dutzend Sätze ausgegeben werden, aber dafür tausende Einträge im PHP-Skript durchlaufen...

Danke für eure Hilfe!

  1. Hello,

    Ist es möglich, diese Auswahl auf die Abfrage der Datenbank zu übertragen udn bereits dort schon so zu sortieren, dass sie weiterspringt, wenn ein Wert wie "2011-03" einmal gefunden worden ist?

    Beschäftige Dich mit Gruppierung und /oder Subselects.

    http://dev.mysql.com/doc/refman/5.1/de/group-by-modifiers.html

    Liebe Grüße aus dem schönen Oberharz

    Tom vom Berg

    --
     ☻_
    /▌
    / \ Nur selber lernen macht schlau
    http://bergpost.annerschbarrich.de
    1. Hallo Hotti, hallo Tom,

      danke für den Hinweis, habe mich eingelesen und alles klappt prima. Insbesondere das Abfrage-Beispiel hat mir sehr geholfen!

  2. hi,

    Ich finde es komisch, wenn effektiv nur ein paar Dutzend Sätze ausgegeben werden, aber dafür tausende Einträge im PHP-Skript durchlaufen...

    Ja, das ist unproduktiv, das kannst Du getrost der DB überlassen. Hier ein Beispiel zum gruppieren (Daily Reports):

      
    SELECT DATE(FROM_UNIXTIME(ts)) as date, count(ts) as cnt FROM log GROUP BY DAY(date) ORDER BY ts desc;  
    
    

    Mein Beispiel ist zwar nicht so schön, weil ich im Feld 'ts' nicht den richtigen Datentyp habe, ich habe nur einen Unix-Timestamp. Mit dem richtigen Datentyp fürs Datum gehts dann wie geschmiert und statt nach Tagen kannste selbstverständlich auch nach Monaten gruppieren.

    Hotti

    @Tom: Vorn paar Tagen hastu gemeckert, weil nur Links gesetzt wurden, unne jetze Du!? Bissl ausführlicher darfs doch sein ;)

    1. Hello Hotti,

      @Tom: Vorn paar Tagen hastu gemeckert, weil nur Links gesetzt wurden, unne jetze Du!? Bissl ausführlicher darfs doch sein ;)

      Das stimmt. Beispiele sind besser. Abe aus dem Stand habe ich das eben nicht hinschreiben wollen und meinen Testserver habe ich gerade mal wieder kaputtgespielt. Der wird jetzt erst neu gemacht, wenn die neuen Festplatten da sind.

      Liebe Grüße aus dem schönen Oberharz

      Tom vom Berg

      --
       ☻_
      /▌
      / \ Nur selber lernen macht schlau
      http://bergpost.annerschbarrich.de