Patrick: Brauche MySQL-Abfrage

Hi,

ich bin verzweifelt auf der Suche nach einer Abfrage.
Uns zwar habe ich in meiner DB viele Datumsfelder (datetime) mit zugehörigen Usern (integer->userid).
Jetzt möchte ich rausbekommen, welche User sich in einem Zeitraum (1 Monat) min. an 8 verschiedenen Tagen eingeloggt haben.
Wie stell ich das an? Mein problem liegt halt in der Anzahl der Tage.

Danke
Patrick

  1. Hallo,

    Uns zwar habe ich in meiner DB viele Datumsfelder (datetime) mit zugehörigen Usern (integer->userid).
    Jetzt möchte ich rausbekommen, welche User sich in einem Zeitraum (1 Monat) min. an 8 verschiedenen Tagen eingeloggt haben.

    extrahiere aus dem Datumsfeld mit DATE() den Datumsanteil, zähle mit COUNT (DISTINCT) die verschiedenen Werte, schränke den Zeitraum mit der WHERE-Klausel ein, gruppiere nach der userid, reduziere die Ergebnismenge mit der HAVING-Klausel auf die gewünschten Datensätze.

    Freundliche Grüße

    Vinzenz

    1. Hi,

      habe es jetzt mal so versucht, bekomme aber leider nur 1 Datensatz zurück.

      SELECT user
      FROM login
      WHERE date( datum )
      BETWEEN '2009-05-01'
      AND '2009-05-31'
      having count(distinct(DATE(datum))) >= 8

      Hat jemand noch eine Idee, was ich falsch mache?

      Danke
      Patrick

      1. Hi,

        habe es jetzt mal so versucht, bekomme aber leider nur 1 Datensatz zurück.

        SELECT user
        FROM login
        WHERE date( datum )
        BETWEEN '2009-05-01'
        AND '2009-05-31'
        having count(distinct(DATE(datum))) >= 8

        Hat jemand noch eine Idee, was ich falsch mache?

        Abgesehen davon, dass du die dir angeratene Gruppierung ignoriert hast, steht das COUNT dort an einer ungünstigen Stelle - pack's in die Spaltenliste, und vergebe einen Alias, den du mittels HAVING überprüfst.

        MfG ChrisB

        --
        Light travels faster than sound - that's why most people appear bright until you hear them speak.