[Résolu] multiples COUNT et JOIN
Bonjour à vous !
Apparement je ne suis pas le seul à avoir du mal avec les jointures externes, mais je n'ai pas trouvé de solution à mon problème dans les messages précédents :(
Je dispose de deux tables : "rubrique" et "bloc" fonctionnant un peu sur le principe d'un forum.
- Rubrique contient un id_rubrique (clé primaire) et un id_parent (faisant référence à id_rubrique) indiquant si une rubrique est une sous-rubrique (si id_parent != 0) et dans ce cas, de quelle rubrique parent elle dépend.
- Bloc contient un id_rubrique selon la rubrique à laquelle elle appartient.
Je cherche à trouver pour toutes les rubriques, le nombre de sous rubrique (s'il y en a) ainsi que le nombre de blocs (s'il y en a) qui lui sont rattaché. J'utilise pour cela la requête suivante (sous MySQL) :
Code:
1 2 3 4 5 6 7 8
|
SELECT r.id_rubrique, r.libelle,
COUNT(r2.id_rubrique) AS nb_sous_rubriques, COUNT(b.id_bloc) AS nb_blocs
FROM web_rubrique r
LEFT JOIN web_rubrique r2 ON r.id_rubrique = r2.id_parent
LEFT JOIN web_bloc b ON r.id_rubrique = b.id_rubrique
WHERE r.id_parent = 0
GROUP BY r.id_rubrique, r.libelle |
Mon problème est que les résultats des counts sont incohérents (apparement multipliés l'un par l'autre) lorsque le premier est différent de 0.
Pour être clair, au lieu d'obtenir pour une rubrique ayant 4 sous rubriques et 2 blocs soit :
1 | MonLibellé | 4 | 2
j'obtiens
1 | MonLibellé | 8 | 8
Quelqu'un peut-il m'expliquer comment se fait-ce ? et surtout que faire pour y remédier ?
Le but étant bien entendu de ne faire qu'une seule requête
Alors à vot' bon coeur m'sieur dame !
et Merci d'avance !