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 :

[MYSQL]le max d'un count ?


Sujet :

Requêtes MySQL

  1. #1
    Candidat au Club
    Inscrit en
    Septembre 2002
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 8
    Points : 3
    Points
    3
    Par défaut [MYSQL]le max d'un count ?
    bonjour,

    mon idée me semble banale mais je n'arrive pas à la mettre en oeuvre...

    j'ai un table commentaire (mon site propose de commenter des livres pour enfants) avec 3 champs importants :
    - isbn (du livre commenté)
    -auteur (du commentaire)
    - commentaire

    je voudrais connaitre le ou les livres ayant été le plus commentés.

    j'arrive à faire le count avec un group by isbn pour savoir cb de fois chaque livre a été commenté mais comment faire pour récupérer la valeur max ?
    J'ai essayer d'imbriquer max(count()) mais sans succés...

    une idée ?

    merci

  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
    Essaye :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT MAX(Nombre) 
    FROM (SELECT COUNT(*) AS Nombre 
          FROM laTable 
          GROUP BY ISBN)
    J'affirme péremptoirement que toute affirmation péremptoire est fausse
    5ième élément : barde-prince des figures de style, duc de la synecdoque
    Je ne réponds jamais aux questions techniques par MP

  3. #3
    Candidat au Club
    Inscrit en
    Septembre 2002
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 8
    Points : 3
    Points
    3
    Par défaut
    MERCI,

    c'est ce que j'étais en train d'essayer en m'inspirant d'un autre post.

    mais ça me répond :

    "Every derived table must have its own alias"

    je suis sous :
    MySQL 4.1.15 sur le serveur sql.free.fr

  4. #4
    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
    Essaye (je n'ai pas mySQL) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT MAX(a.Nombre) 
    FROM (SELECT COUNT(*) AS Nombre 
          FROM laTable 
          GROUP BY ISBN) a
    J'affirme péremptoirement que toute affirmation péremptoire est fausse
    5ième élément : barde-prince des figures de style, duc de la synecdoque
    Je ne réponds jamais aux questions techniques par MP

  5. #5
    Candidat au Club
    Inscrit en
    Septembre 2002
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 8
    Points : 3
    Points
    3
    Par défaut
    MERCI,

    ça marche !
    je comprends pas ce a, je vais me documenter mais c'est sûr j'aurais jamais trouvé seule...

    encore merci !

    surtout que je viens de m'apercevoir qu'il y a une partie du forum spécifique à mysql et que j'aurai dû poster là bas.


    question subsidiaire :
    comment peut on mettre une signature, je ne vois pas dans mon profil de case à remplir ?

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 785
    Points : 9 716
    Points
    9 716
    Par défaut
    Le 'a', c'est un alias de table. On peut aussi l'écrire "AS a".

    Maintenant, pour les versions anciennes (antérieures à la 4.1), une solution sans requête imbriquée (mais avec un ORDER BY):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT COUNT(*) AS Nombre
    FROM laTable
    GROUP BY ISBN
    ORDER BY Nombre 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...

  7. #7
    Candidat au Club
    Inscrit en
    Septembre 2002
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 8
    Points : 3
    Points
    3
    Par défaut
    Merci à tous les 2, j'ai réussi à faire ce que je voulais.

    J'ai choisi la première solution même si la deuxième marche très bien aussi car il fallait que j'imbrique cette requete dans une autre pour ressortir les informations du livre qui avait le plus de commentaires et ma version de Mysql n'accepte pas les limit dans une sous requete (d'apres le message d'erreur).

    Un grand Merci !

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 785
    Points : 9 716
    Points
    9 716
    Par défaut
    C'était surtout pour information que je disais ça (au cas où par hasard, quelqu'un avec une vieille version de MySQL lirait ce sujet...)

    En effet, toutes les requêtes ne sont pas imbriquables (et celles qui contiennent des LIMIT font vraisemblablement partie de celles-là). C'est pourquoi j'aime pas trop les requêtes imbriquées (mais des fois, on peut difficilement faire autrement...)
    "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...

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

Discussions similaires

  1. [SQL Server] select max d'un count ?
    Par chess75 dans le forum Langage SQL
    Réponses: 10
    Dernier message: 28/08/2017, 14h38
  2. Sélectionner le Max d'un COUNT
    Par athos7776 dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 30/07/2007, 22h54
  3. Réponses: 1
    Dernier message: 01/05/2007, 17h38
  4. [MySql] Capacité max ?
    Par budylove dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 26/09/2006, 10h18
  5. [MySQL/PHP] Max
    Par snaxisnake dans le forum Langage SQL
    Réponses: 3
    Dernier message: 02/03/2006, 10h47

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