J'ai une table login_log
: Groupe par date Clusters
Et je suis en train de construire une requête groupée connexions "uniques" baseed sur login_email, login_success, login_email, account_type_id, login_lock, login_ip
donc jusqu'à présent je
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
Ce qui me reçoit:
Mais prendre la ligne 5 et 6 par exemple. Sur 6, l'utilisateur a échoué à la connexion 3 fois avant une connexion réussie sur la ligne 5. Le compte de la ligne 5 devrait indiquer 1 mais il regroupe les connexions réussies avant les tentatives infructueuses. Ce que je veux est une ligne avec le login réussi, une ligne avec le login échoué, puis une ligne avec un login réussi, trié par date.
Comment est-ce que je peux grouper la requête de date de sorte qu'ils ne "sautent" pas l'un l'autre?
Si le groupe I par date je pourrais aussi bien ne pas du tout groupe. L'idée est de dire que 3 tentatives de connexion échouées les unes après les autres seraient groupées, mais si une réussite se produisait entre, elle retournerait 3 lignes, compterait 2 => échouer, compter 1 => succès, compter 1 => échouer –
Je vois ce que tu veux dire. Il semble que vous ayez besoin d'un intervalle qui change avec login_success. Je ne sais pas comment faire cela en pure MySQL. Cela peut être un bon début cependant: [link] (http://www.artfulsoftware.com/infotree/queries.php?&bw=1280#798) - il vous indique comment identifier les lignes qui diffèrent des rangs immédiatement précédents que vous décrit ci-dessus – citizenen
en utilisant Date() est un correctif rapide et suffisant pour l'instant. –