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 :

COUNT() et MAX()


Sujet :

Requêtes MySQL

  1. #1
    Membre éprouvé Avatar de julien.63
    Profil pro
    balayeur
    Inscrit en
    Décembre 2005
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : balayeur

    Informations forums :
    Inscription : Décembre 2005
    Messages : 1 348
    Par défaut COUNT() et MAX()
    Salut,
    j'ai une table dans laquelle je comptabilise des téléchargements de fichiers que j'ai sur mon site.
    à chaque téléchargement, une nouvelle ligne est créée avec l'id du fichier, la date, la provenance...
    Je fais un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT count(*) FROM `stat` GROUP BY `id_pub`
    ce qui me donne combien de fois chaque fichier a été téléchargé.

    Mais j'aimerai extraire la valeur maximum de cette liste. J'essaie d'utiliser la fonction MAX() mais je n'y arrive pas...

    merci pour le petit coup de pouce,

    Julien

  2. #2
    Membre averti
    Inscrit en
    Mars 2006
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 13
    Par défaut
    petite solution si j'ai bien compris ton pb

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT max( tableTemp.colTemp )
    FROM (
    SELECT count( * ) AS colTemp FROM stat
    GROUP BY `id_pub`
    ) AS tableTemp

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 123
    Par défaut
    Quand tu fais un SELECT COUNT il faut que tu spécifies la variable dans laquelle va etre stockée le compteur.
    Comme l'a fait audrey
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT count( * ) AS colTemp
    le nombre d'enregistrement sera stockée dans la variable colTemp.

  4. #4
    Membre éprouvé Avatar de julien.63
    Profil pro
    balayeur
    Inscrit en
    Décembre 2005
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : balayeur

    Informations forums :
    Inscription : Décembre 2005
    Messages : 1 348
    Par défaut
    ok je comprends le principe de fonctionnement.
    Mais est-ce qu'on peut mettre la requette telle quelle dans le code PHP?
    Par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql = mysql_query("SELECT max( tableTemp.colTemp ) FROM ( SELECT count( * ) AS colTemp FROM stat GROUP BY `id_pub`) AS tableTemp");
    j'ai essayé dans phpmyadmin mais cela génère une erreur...

    merci

    julien

  5. #5
    Rédacteur
    Avatar de pcaboche
    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    2 785
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Singapour

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 785
    Par défaut
    Plus simple et sans requête imbriquée:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT count( * ) AS nbStats
    FROM stat
    GROUP BY id_pub
    ORDER BY nbStats DESC
    LIMIT 1
    "On en a vu poser les armes avant de se tirer une balle dans le pied..."
    -- pydévelop

    Derniers articles:

    (SQL Server) Introduction à la gestion des droits
    (UML) Souplesse et modularité grâce aux Design Patterns
    (UML) Le Pattern Etat
    Autres articles...

  6. #6
    Membre éprouvé Avatar de julien.63
    Profil pro
    balayeur
    Inscrit en
    Décembre 2005
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : balayeur

    Informations forums :
    Inscription : Décembre 2005
    Messages : 1 348
    Par défaut
    Salut,
    ça fonctionne à merveille, merci pour la réponse.
    Juste par curiosité, j'insiste un peu
    est ce qu'on faire des requettes imbriquées dans un code PHP?
    Merci
    julien

  7. #7
    Rédacteur
    Avatar de pcaboche
    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    2 785
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Singapour

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 785
    Par défaut
    Il n'y a pas de problème.

    Ca ne dépend pas de PHP, mais de ta version de MySQL. En effet, les requêtes imbriquées ne sont acceptées qu'à partir de la version 4.1. Par contre, je te déconseille autant que possible d'y avoir recours car elles sont la résultante de la traduction litérale d'un cahier des charges et sont le plus souvent très lentes (sauf cas TRES particuliers). Le plus souvent, il existe des alternatives (jointures, merge tables, etc)

    Enfin, tu n'as pas à t'excuser parce que tu poses une question "juste par curiosité". C'est très bien au contraire et on est là pour y répondre. J'aime les gens qui vont au fond des choses.
    "On en a vu poser les armes avant de se tirer une balle dans le pied..."
    -- pydévelop

    Derniers articles:

    (SQL Server) Introduction à la gestion des droits
    (UML) Souplesse et modularité grâce aux Design Patterns
    (UML) Le Pattern Etat
    Autres articles...

  8. #8
    Membre éprouvé Avatar de julien.63
    Profil pro
    balayeur
    Inscrit en
    Décembre 2005
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : balayeur

    Informations forums :
    Inscription : Décembre 2005
    Messages : 1 348
    Par défaut
    Merci.
    Faut que je me renseigne plus sur les jointures et les merges.
    A plus
    Julien

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

Discussions similaires

  1. Erreur COUNT après MAX ?
    Par utoz07 dans le forum Requêtes
    Réponses: 2
    Dernier message: 13/09/2010, 18h25
  2. Equivalent de Max(COUNT(*))
    Par Naktan dans le forum Requêtes
    Réponses: 5
    Dernier message: 01/05/2006, 14h24
  3. Coupler les fonction COUNT et MAX
    Par Pascal Lob dans le forum Langage SQL
    Réponses: 5
    Dernier message: 27/03/2006, 09h45
  4. [MYSQL]le max d'un count ?
    Par malotte dans le forum Requêtes
    Réponses: 7
    Dernier message: 06/01/2006, 20h14
  5. remplacer max(count())
    Par atog dans le forum Langage SQL
    Réponses: 2
    Dernier message: 07/01/2005, 00h01

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