Les partitions et les événements doivent être joints avant les joignant à des joueurs.
Nous pourrions utiliser une sous-requête ou des parenthèses pour forcer cette "précédence" de jointure particulière, mais il est préférable d'utiliser simplement l'ordre des JOIN dans le texte SQL, puis "d'orienter" soigneusement le dernier JOIN vers les joueurs (DROITE dans ce cas).
Le COALESCE sert uniquement à convertir les NULL en 0.
SELECT
P_Id, LastName, FirstName, COALESCE(SUM(Points), 0) TotalPoints
FROM
Scores
JOIN Events
ON Event = E_Id AND Year = 2012
RIGHT JOIN Players
ON P_Id = Player
GROUP BY
P_Id, LastName, FirstName
ORDER BY
TotalPoints DESC;
Cela produit :
P_ID LASTNAME FIRSTNAME TOTALPOINTS
1 Hansen Ola 6
2 Svendson Tove 0
3 Pettersen Kari 0
Vous pouvez jouer avec dans ce SQL Fiddle .