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

PHP & Base de données Discussion :

Requête triant des élement comptés [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé
    Femme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2010
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2010
    Messages : 63
    Par défaut Requête triant des élement comptés
    Bonsoir à tous,

    J'ai un problème d'ordre théorique sur l'élaboration d'une requête.
    Voici le contexte :
    J'ai une table contenant des articles, et une autre contenant des commentaires, dont voici la structure :
    id_commentaire
    id_article
    id_auteur
    content


    Je cherche à sélectionner les 10 articles qui ont le plus de commentaires et les ordonner (un top 10).

    Je ne vois cependant pas comment faire.
    Il faut récupérer le nombre de commentaires par article, puis ne garder que les 10 plus commentés. En clair, il faut trier ces articles selon le nombre de récursivités de chaque id_article.

    Quelqu'un voit-il comment faire cela ?
    Merci d'avance,
    Pauline.

  2. #2
    Membre Expert
    Avatar de gene69
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 769
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 769
    Par défaut
    tu dois avoir 2 tables disons commentaires et articles.

    Une requete imbriquée agrégeante fera l'affaire.
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    SELECT articles.PK_ARTICLE, articles.body 
    FROM 
    (SELECT count(PK_COMMENT) as NB, FK_ARTICLE
    FROM commentaires
    GROUP BY FK_ARTICLE)  as X LEFT JOIN articles ON  X.FK_ARTICLE = articles.PK_ARTICLE
    ORDER BY X.NB desc
    LIMITS 0,10

  3. #3
    Membre Expert
    Avatar de gene69
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 769
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 769
    Par défaut
    Personnellement, s'il y a un gros enjeux de performance, je pense qu'un peut de dénormalisation sera le bienvenu. Un trigger sera idéal. Est-ce que Mysql supporte les triggers?

  4. #4
    Membre confirmé
    Femme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2010
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2010
    Messages : 63
    Par défaut
    Merci infiniment pour tes réponses gene69, la première solution marche parfaitement (et je dois avouer que je n'y croyais pas trop quand j'ai commencé à remplacer par les noms de mes champs).

    En ce qui concerne les triggers, il semblerait qu'en effet MySQL les gèrent (voir ici). Cependant, je n'en ai jamais utilisé donc je pense m'en tenir à la première solution, qui bien que certainement plus lourde, conserve mon cerveau dans un état stable .

    Merci encore de ton aide très précieuse et bonne fin de soirée.

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

Discussions similaires

  1. Requête SQL : filtrer des élements
    Par DomIII dans le forum Langage SQL
    Réponses: 8
    Dernier message: 04/07/2012, 11h04
  2. [JComboBox] rechercher des élements
    Par Garion dans le forum Composants
    Réponses: 20
    Dernier message: 24/08/2008, 22h23
  3. 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
  4. Requête avec des tables de plusieurs bases
    Par Oluha dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 11/04/2005, 16h56
  5. [ADO/Access] Appel d’une requête avec des paramètres
    Par Taxenna dans le forum Bases de données
    Réponses: 1
    Dernier message: 07/12/2004, 14h58

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