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 :

Recuperer les enregistrements present plus de x fois


Sujet :

Requêtes MySQL

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 5
    Points : 3
    Points
    3
    Par défaut Recuperer les enregistrements present plus de x fois
    Bonjour,

    Voilà mon problème, j’ai trouvé une solution mais je pense que c’est possible de faire mieux …

    J’ai une table avec des adresses ip et j’aimerai récupérer uniquement les adresses ip présente plus de 50 fois.

    Ma solution c’est de faire un group by et ensuite d’utiliser un if pour tester si le nombre est supérieur à 50.

    Comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $query  = mysql_query("SELECT ip, count(ip) as total FROM table GROUP BY ip");
    while ($db = mysql_fetch_array($query)) {
    	if  ($db[total]>50) echo $db[ip];
    }
    Mais bon cette requête est gourmande, peut-être existe-il une solution plus simple.

  2. #2
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT ip, count(ip) as total 
    FROM table 
    GROUP BY ip
    HAVING COUNT(ip) > 50
    Je ne connais pas mySQL, tu peux, peut-être utiliser l'alias dans le HAVING :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT ip, count(ip) as total 
    FROM table 
    GROUP BY ip
    HAVING total > 50

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    Merci beaucoup
    Ça fonctionne impeccable !
    Avec l’alias dans le having également.

    Maintenant je me demande si il n’est pas possible d’optimiser encore le truc.
    La fonction count(ip) comptes toutes les ip. Hors moi j’ai besoin de savoir seulement s’il y en plus de 50. Est-il possible entre guillemets de dire au count de ne plus compter à partir de 50 pour que ça retourne un résultat plus rapidement ?

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    Si quelqu'un c si c'est pas possible ... il peut me le dire.
    Comme ca je pourait mettre [resolu]
    Merci d'avance !

  5. #5
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    Tu peux toujours essayer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT ip
    FROM table 
    GROUP BY ip 
    HAVING COUNT(ip) > 50
    et si l'optimiseur est assez intelligent, il trouvera tout seul que le comptage de toutes les ip est inutile ; mais cela risque de ne pas te faire gagner beaucoup de temps si la majorité des ip ont un count < 50.

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    Merci !
    Bein je ne sais pas si il compte tout, mais j'ai l'impression. J'ai reduit le seuil à 30 pour avoir beaucoup plus de resultat qu'avec 50 et et j'ai mis un ckrono ... le temps et le même avec les 2 solutions ...
    Donc apparament c'est un optimiseur béta
    Je vais arreter d'embeter tout le monde avec mon sujet et le placer comme resolu. Médiat merci beaucoup !!
    @+

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 07/05/2015, 13h16
  2. affiche les enregistrements de plus de 5 jours
    Par tarmo57 dans le forum Débuter
    Réponses: 33
    Dernier message: 03/04/2012, 20h22
  3. Recuperer l'enregistrement le plus recent
    Par jubourbon dans le forum Développement
    Réponses: 5
    Dernier message: 10/11/2009, 15h57
  4. recuperer les enregistrements d'un detailsviews dans des textbox
    Par mead_Developper dans le forum ASP.NET
    Réponses: 0
    Dernier message: 16/05/2009, 20h48
  5. recuperer les fichier present dans un repertoire et les renommer en cascade
    Par oldscrout dans le forum Shell et commandes GNU
    Réponses: 10
    Dernier message: 20/12/2007, 15h44

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