Ich habe eine login_log
Tabelle: Gruppe von Rispendatteln
Und ich versuche, eine Abfrage gruppiert „einzigartig“ Logins auf login_email, login_success, login_email, account_type_id, login_lock, login_ip
Also bisher habe ich
SELECT count(*) count, MAX(login_date) date, login_ip, login_email, account_type_id, login_lock, login_success
FROM `login_log`
GROUP BY login_email, login_success, login_email, account_type_id, login_lock, login_ip
ORDER BY date DESC
baseed zu bauen
Was ich bekommt:
Aber nimm Reihe 5 und 6 zum Beispiel. Bei 6 hat der Benutzer die Anmeldung dreimal fehlgeschlagen, bevor er in Zeile 5 erfolgreich abgeschlossen wurde. Die Zählung der Zeile 5 sollte 1 lauten, es werden jedoch erfolgreiche Anmeldungen vor den fehlgeschlagenen Versuchen gruppiert.
Was ich will ist eine Zeile mit der erfolgreichen Anmeldung, eine Zeile mit der fehlgeschlagenen Anmeldung, dann eine Zeile mit einer erfolgreichen Anmeldung, nach Datum sortiert.
Wie kann ich die Datumsabfrage so gruppieren, dass sie sich nicht gegenseitig "springen"?
Wenn ich Gruppe von Datum könnte ich auch nicht Gruppe überhaupt. Die Idee ist, dass 3 fehlgeschlagene Anmeldeversuche nacheinander gruppiert werden, aber wenn ein erfolgreicher dazwischen kommt, würde es 3 Zeilen zurückgeben, zählen 2 => fehlgeschlagen, zählt 1 => Erfolg, zählt 1 => fehlgeschlagen –
Ich verstehe was du meinst. Offenbar benötigen Sie ein Intervall, das sich mit login_success ändert. Nicht sicher, wie man das in reinem MySQL macht. Das könnte aber ein guter Anfang sein: [link] (http://www.artfulsoftware.com/infotree/queries.php?&bw=1280#798) - es zeigt Ihnen, wie Sie Zeilen identifizieren, die sich von _unvorhergehenden Zeilen_ unterscheiden wie Sie oben beschrieben – citizenen
mit Date() ist eine schnelle, nah genug-Fix für jetzt. –