Sujet : [mysql] Jointure Et Count()

Salut la dedans,

Bon je vais passer pour un gros nul mais tant pis. Je suis un peu rouillé du SQL et je lutte pour faire une requete.

J'ai deux tables, une table articles et une table commentaires. Ces deux tables sont reliées par le champ idArticle. Je veux obtenir la liste de tous les articles et pour chaque article calculer le nombre de commentaires qui lui sont associés...

Voila c'est pas compliqué mais j'arrive pas a la sortir...

Cette requete est valide mais ne donne aucun resultat :

SELECT articles. * , COUNT(  commentaires.idArticle  ) 
FROM articles, commentaires
WHERE articles.idArticle = commentaires.idArticle
GROUP  BY articles.idArticle;

Merci.

-------------------------------
"Keyboard not detected, press a key to continue..."

WWW

Re : [mysql] Jointure Et Count()

A la vue de vos nombreuses réponses wink, je me réponds à moi-même pour me donner la solution big_smile

En fait ma table commentaires ne contient pour le moment aucun commentaires, ce qui fait que le count renvoyé pour le moment vaut toujours 0. Or, mysql n'affiche pas les résultats dont le count vaut 0...dommage.

Pour résoudre ce problème il faut utiliser une jointure de type LEFT JOIN.

Definition :
La syntaxe LEFT JOIN qui fait la jointure entre deux tables, inclut tous les enregistrements de la première table même s'ils n'ont pas de correspondance dans la deuxième table.

Ainsi, en utilisant un LEFT JOIN dans mon cas, je force ma requete a me donner les articles même si le nombre de commentaires pour un article vaut 0.

CQFD.

La requete valide et opérationnelle :

SELECT articles. * , COUNT( commentaires.idArticle ) 
FROM articles LEFT JOIN commentaires
USING ( idArticle ) 
GROUP BY articles.idArticle;
-------------------------------
"Keyboard not detected, press a key to continue..."

WWW

Re : [mysql] Jointure Et Count()

Tu postes vite aussi !!! smile

Pour spécifier des conditions pour ta jointure, oublie pas la petite technique ... ( ICI )

----------------------------------------------------------------------------------------------------------------------------
On peut être intelligent toute sa vie et stupide un instant.

WWW


Warning: count(): Parameter must be an array or an object that implements Countable in /home/clients/a38b86744e455b1f2e763fe46170a4c9/web/jebulle.net/forums/include/parser.php on line 820

Re : [mysql] Jointure Et Count()

on se connecte pas forcément entre 12h28 et 14h53 wink

http://membres.lycos.fr/cuicui/forums/panneau_rupert.png

Il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes...

WWW

Re : [mysql] Jointure Et Count()

Oui je sais, c'etait pour blaguer un tit peu wink

-------------------------------
"Keyboard not detected, press a key to continue..."

WWW