IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Requêtes MySQL Discussion :

Requête avec prise en compte des écarts de temps


Sujet :

Requêtes MySQL

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Mars 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Mars 2017
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Requête avec prise en compte des écarts de temps
    Bonjour à tous !
    J'ai un souci sur une requête assez tordue, et vu que je débute, j'ai un peu de mal à produire ce que je veux... si toutefois c'est possible...

    J'ai une table de log qui contient :
    - le nom de l'événement
    - le userid de l'utilisateur
    - un champ de date de création en UnixTime

    Je souhaite calculer le nombre total d'occurences pour un événement donné pour tous les utilisateurs. Ca, pas de souci...
    MAIS pour que je prenne en considération une ligne de donnée et qu'elle rentre dans le compte final, je voudrais que le temps écoulé entre la date de création de cette ligne et la date de création de la ligne précédente du même utilisateur (et bien sûr du même événément) soit par exemple supérieure à deux minutes !
    En clair, je ne dois pas prendre en considération une ligne de données si le même utilisateur a déjà provoqué le même événement il y a moins de deux minutes...

    Est-ce que cela est possible ??
    Merci pour votre aide !

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 109
    Points : 28 430
    Points
    28 430
    Par défaut
    Oui, c'est possible.

    Qu'as-tu déjà essayé comme requêtes ?
    En quoi ne répondent-elles pas à ton besoin ?

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Mars 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Mars 2017
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Merci pour votre réponse !!

    Pour l'instant, je n'ai justement rien essayé... Je patauge sur la structure de la requête d'une part, et d'autre part sur le moyen d'effectuer la comparaison et de prendre (ou non) une ligne de données.
    Dans mon idée, je pensais qu'il fallait :
    • sélectionner dans la table l'événement souhaité et l'utilisateur
    • dans cette sélection, pour chaque ligne :
      • trouver le résultat précédent pour l'utilisateur concerné
      • faire la comparaison de temps pour savoir si on garde la ligne ou pas.


    Après, quand je me relis, je me rends vraiment compte que j'ai un raisonnement orienté PHP... Je saurais programmer cela, mais là, je ne peux pas, je dois produire une requête SQL ! D'où mon blocage sur la partie où il s'agit de "filtrer" les résultats...

  4. #4
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 109
    Points : 28 430
    Points
    28 430
    Par défaut
    Je vais t'aider un peu

    Cette requête te donne pour chaque utilisateur et chaque événement, la dernière occurrence rencontrée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT  utilisateur
        ,   evenement
        ,   MAX(occurrence) AS  derniere_occurrence
    FROM    matable
    GROUP BY utilisateur
        ,   evenement    
    ;
    Celle-ci te donne pour chaque occurrence d'un événement pour un utilisateur la liste des occurrences antérieures :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    SELECT  cur.utilisateur
        ,   cur.evenement
        ,   cur.occurrence  AS  occurrence_courante
        ,   ant.occurrence  AS  occurrence_anterieure
    FROM    matable AS  cur
        LEFT JOIN
            matable AS  ant
            ON  cur.utilisateur = ant.utilisateur
            AND cur.evenement   = ant.evenement
            AND cur.occurrence  > ant.occurrence
    ;
    Je te laisse trouver seul comment combiner les deux concepts pour :
    1) identifier l’occurrence précédente et seulement celle-là
    2) ne conserver que celles qui répondent à l'écart attendu (une piste : HAVING)

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Mars 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Mars 2017
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    En effet, si avec ça je trouve pas... Allez, j'ai plus qu'à recoller les morceaux !
    Pour les comparaisons de temps, ce devrait être simple grâce au unixtime.
    On y croit !!!

Discussions similaires

  1. Ajout de ligne et de colonnes avec prise en compte des calculs
    Par sab_info dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 22/01/2013, 16h51
  2. Réponses: 1
    Dernier message: 13/07/2012, 16h04
  3. API pour générer des classes Java avec prise en compte des contraintes du XSD
    Par Dagnir dans le forum Format d'échange (XML, JSON...)
    Réponses: 5
    Dernier message: 29/07/2011, 16h03
  4. Requête avec prise en compte des jours ouvrés
    Par guenfood dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 25/02/2008, 15h36
  5. [cURL] Non prise en compte des cookies avec librairie curl
    Par jpascal dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 02/12/2007, 20h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo