Wyniki i wydarzenia muszą być połączone wewnętrznie przed zewnętrzne-łączenie ich z graczami.
Moglibyśmy użyć podzapytania lub nawiasów, aby wymusić „pierwszeństwo” tego konkretnego łączenia, ale lepiej jest po prostu użyć kolejności JOIN w tekście SQL, a następnie ostrożnie „zorientować” ostatnie JOIN na graczy (w tym przypadku PRAWY).
COALESCE służy tylko do konwersji wartości NULL na 0s.
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;
Daje to:
P_ID LASTNAME FIRSTNAME TOTALPOINTS
1 Hansen Ola 6
2 Svendson Tove 0
3 Pettersen Kari 0
Możesz się nim bawić w SQL Fiddle .