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 :

Jointure et COUNT [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Nouveau membre du Club
    Inscrit en
    Janvier 2008
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 63
    Points : 38
    Points
    38
    Par défaut Jointure et COUNT
    Bonsoir,
    J'ai un petit soucis dans une requête SQL avec la fonction COUNT.
    J'ai 2 tables. L'une nommée news et l'autre commentaires.
    Dans ma table commentaires, il y a un champ id_news qui permet de savoir pour quelle news le commentaire a été posté. Cela me permet également de faire la jointure entre les 2 tables.
    La voici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    $req = mysql_query('SELECT news.id AS id,
    	   news.auteur AS auteur,
    	   news.titre AS titre,
    	   news.news AS news,
    	   news.categorie AS categorie,
    	   news.date AS date,
    	   news.date_modif AS date_modif,
    	   COUNT(commentaires.*) AS total_com 
    FROM commentaires INNER JOIN news ON news.id=commentaires.id_news ORDER BY news.id');
    while($d = mysql_fetch_assoc($req))
    {
    // etc
    }
    Je ne sais pas pourquoi mais cette requête me revoie une erreur.
    Ensuite, si je mets COUNT(commentaires.nom_d_un_champ_de_la_table), la requête fonctionne mais ne récupère que la première news en affichant le total de TOUS les commentaires de ma bdd ( 258 ) pour une seule news !
    Ce n'est pas vraiment ce que je cherche
    Ce que je souhaiterais, c'est lister toutes les news et dire pour chacune le nombre de commentaires postés.
    Si vous pouviez m'aider, merci

  2. #2
    Membre éprouvé Avatar de vorace
    Homme Profil pro
    Développeur
    Inscrit en
    Août 2010
    Messages
    573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Août 2010
    Messages : 573
    Points : 915
    Points
    915
    Par défaut
    comme ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $req = mysql_query('SELECT news.id AS id,
    	   news.auteur AS auteur,
    	   news.titre AS titre,
    	   news.news AS news,
    	   news.categorie AS categorie,
    	   news.date AS date,
    	   news.date_modif AS date_modif,
    	   COUNT(commentaires.id_news) AS total_com 
    FROM news INNER JOIN commentaires ON news.id=commentaires.id_news GROUP BY news.id');
    Développeur informatique contrarié...

  3. #3
    Nouveau membre du Club
    Inscrit en
    Janvier 2008
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 63
    Points : 38
    Points
    38
    Par défaut
    Merci pour ton aide, vorace.
    Cependant, je n'ai que 4 news d'affichées avec des nombres de commentaires totalement faussés !

    PS : J'ai, au total, 27 news avec 258 commentaires.

    Edit : J'ai trouvé la solution ! Je la mets car ça pourra peut-être aider quelqu'un dans le besoin, un jour :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?php
    $req = mysql_query('SELECT news.id id,
    	   news.auteur auteur,
    	   news.titre titre,
    	   news.news news,
    	   news.categorie categorie,
    	   news.date date,
    	   news.date_modif date_modif,
    	   COUNT(commentaires.id) total_com 
              FROM news 
              LEFT JOIN commentaires ON commentaires.id_news = news.id 
              GROUP BY news.id, news_titre, news.news, news.categorie, news.date, news.date_modif
              ORDER BY news.id');

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

Discussions similaires

  1. Jointure avec COUNT(*)
    Par dev14 dans le forum Requêtes
    Réponses: 6
    Dernier message: 26/12/2013, 16h21
  2. Jointure et count
    Par alainyvan dans le forum Langage SQL
    Réponses: 1
    Dernier message: 13/03/2013, 18h00
  3. Jointures et COUNT(*) GROUP BY
    Par SPKlls dans le forum Langage SQL
    Réponses: 18
    Dernier message: 26/11/2008, 00h42
  4. [MySQL] Jointure avec count()
    Par iwf-fr dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 11/03/2008, 18h08
  5. 2 Count() sur deux tables en jointures gauches
    Par Alexandre T dans le forum Langage SQL
    Réponses: 2
    Dernier message: 03/09/2003, 16h53

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