C'est normal car votre filtre WHERE impose que cat.id soit connu (3 étant différente de NULL).
Vous devez :
1) soit faire
WHERE cat.id=3 OR cat.id IS NULL
2) soit faire
WHERE COALESCE(cat.id, 3) = 3
3) soit encore incorporer cette restriction dans la jointure :
1 2 3
| LEFT OUTER JOIN jos_eventlist_categories cat
ON cat.id = e.catsid
AND cat.id=3 |
Dans tous les cas je me permet de vous signaler que votre GROUP BY est faux !
Ce devrait être
GROUP BY firstname , lastname
Donc par exemple :
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| SELECT firstname , lastname ,
COALESCE(SUM(points), 0) AS points
FROM jos_comprofiler c
LEFT OUTER JOIN jos_tournament_results r
ON c.id = r.id_joueur
LEFT OUTER JOIN jos_tournament_points p
ON r.position = p.position
LEFT OUTER JOIN jos_eventlist_events e
ON e.id = r.id_tournoi
LEFT OUTER JOIN jos_eventlist_categories cat
ON cat.id = e.catsid
AND cat.id=3
GROUP BY firstname , lastname
ORDER BY points DESC |
Bref, apprenez le SQL. mon site web comme mes bouquins sont là pour vous y aider !
A +
Partager