Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 19/03/2011, 19h32   #1
Futur Membre du Club
 
Inscription : janvier 2008
Messages : 63
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 63
Points : 16
Points : 16
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 :
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
beji15 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/03/2011, 21h01   #2
Membre émérite
 
Avatar de vorace
 
Homme
Développeur
Inscription : août 2010
Messages : 586
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 : 586
Points : 859
Points : 859
comme ca :
Code :
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é...
vorace est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/03/2011, 21h15   #3
Futur Membre du Club
 
Inscription : janvier 2008
Messages : 63
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 63
Points : 16
Points : 16
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 :
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');
beji15 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 20h08.


 
 
 
 
Partenaires

Hébergement Web