Mysql
 sql >> Base de données >  >> RDS >> Mysql

MySQL JOIN avec SUM et 3 tables

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 .