Question mysql : LEFT JOIN+COUNT
6 messages
• Page 1 sur 1
-

mrPringle - WRInaute impliqué

- Messages: 592
- Inscription: 11 Mar 2006
Question mysql : LEFT JOIN+COUNT
Bonsoir à tous et bonne année.
J'ai un petit probleme sur une requete mysql qui est censée afficher les articles d'un auteur et le nombre de commentaires associés.
Seulement, le fait qu'il n'y ait pas au moins un commentaire par article fausse les résultats, et ce malgré le LEFT JOIN. Une fois qu'il y a un article sans aucun commentaire, les prochains articles dans ce cas ne ressortent pas dans les résultats. Voici la requête :
SELECT `article`.*, COUNT(`commentaire`.`id_comment`) AS `commentaires` FROM `article` LEFT JOIN `commentaire` ON `article`.`id_art`=`commentaire`.`art_comment` WHERE `article`.`auteur_art`=1 GROUP BY `commentaire`.`art_comment` ORDER BY `article`.`visites_art` DESC
J'ai un petit probleme sur une requete mysql qui est censée afficher les articles d'un auteur et le nombre de commentaires associés.
Seulement, le fait qu'il n'y ait pas au moins un commentaire par article fausse les résultats, et ce malgré le LEFT JOIN. Une fois qu'il y a un article sans aucun commentaire, les prochains articles dans ce cas ne ressortent pas dans les résultats. Voici la requête :
SELECT `article`.*, COUNT(`commentaire`.`id_comment`) AS `commentaires` FROM `article` LEFT JOIN `commentaire` ON `article`.`id_art`=`commentaire`.`art_comment` WHERE `article`.`auteur_art`=1 GROUP BY `commentaire`.`art_comment` ORDER BY `article`.`visites_art` DESC
- lefou
- WRInaute discret

- Messages: 131
- Inscription: 7 Juin 2005
As-tu essayé ceci :
SELECT `article`.*, COUNT(`commentaire`.`id_comment`) AS `commentaires` FROM `article`, `commentaire` WHERE `article`.`id_art`=`commentaire`.`art_comment` AND `article`.`auteur_art`=1 GROUP BY `commentaire`.`art_comment` ORDER BY `article`.`visites_art` DESC
SELECT `article`.*, COUNT(`commentaire`.`id_comment`) AS `commentaires` FROM `article`, `commentaire` WHERE `article`.`id_art`=`commentaire`.`art_comment` AND `article`.`auteur_art`=1 GROUP BY `commentaire`.`art_comment` ORDER BY `article`.`visites_art` DESC
-

mrPringle - WRInaute impliqué

- Messages: 592
- Inscription: 11 Mar 2006
Salut,
Oui, j'avais essayé sans le left join, ça n'avait pas marché.
On m'a donné une autre solution, pour ceux que ça interesse, la voici :
En gros, faut pas grouper sur un élément qui peut être nul, le reste c'est de l'allègement de code.
Oui, j'avais essayé sans le left join, ça n'avait pas marché.
On m'a donné une autre solution, pour ceux que ça interesse, la voici :
- Code: Tout sélectionner
SELECT a.*, COUNT(c.`id_comment`) AS nbcommentaire
FROM `article` AS a
LEFT JOIN `commentaire` AS c ON a.`id_art`=c.`art_comment`
WHERE a.`auteur_art`=1
GROUP BY a.`art_id`
ORDER BY a.`visites_art` DESC
En gros, faut pas grouper sur un élément qui peut être nul, le reste c'est de l'allègement de code.
6 messages
• Page 1 sur 1
Lectures recommandées sur ce thème :
- MySQL problème de requete LEFT JOIN
- [Résolu] Update / Select LEFT JOIN / et mysql
- double left join
- [Résolu] Optimisation de LEFT JOIN
- [réglé]Reponse double dans une requête avec LEFT JOIN
- Aide requête MySQL avec count
- [Résolu] [MySQL] : count dans clause WHERE
- Formulation d'un requête mysql : MAX, COUNT et GROUP BY
- [MySQL] INNER JOIN qui retourne des valeurs par defaut
- Column count doesn't match value count at row 1
- Google rachète iRows (tableur en ligne) - 20-11-2006
- Passage à l'heure d'été/hiver sur un forum phpBB - 31-10-2010
- Suggestions de requêtes dans Google News - 29-04-2006
- Gestion des langues et des sessions en PHP / MySQL - 02-05-2004
- Script de mise en cache des pages (PHP MySQL) - 09-08-2010
- Comment protéger sa vie privée sur Internet - 05-05-2008
- GoogleStats : analyse temps réel des visites de Google sur votre site - 02-10-2002
- Accord commercial entre Google et l'agence Associated Press - 06-08-2006
Consultez la description détaillée des produits ou services de Google suivants : Google Answers
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités
