sql >> Database >  >> RDS >> Mysql

MySQL JOIN met SUM en 3 tabellen

Scores en evenementen moeten voordat aan elkaar worden gekoppeld buitenste-deelname aan spelers.

We zouden een subquery of haakjes kunnen gebruiken om deze specifieke join "voorrang" te forceren, maar het is leuker om gewoon de volgorde van JOIN's in de SQL-tekst te gebruiken, en dan voorzichtig de laatste JOIN te "oriënteren" naar spelers (in dit geval RECHTS).

De COALESCE is alleen voor het converteren van NULL's naar 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;

Dit levert:

P_ID    LASTNAME    FIRSTNAME   TOTALPOINTS
1       Hansen      Ola         6
2       Svendson    Tove        0
3       Pettersen   Kari        0

Je kunt ermee spelen in deze SQL Fiddle .



  1. Git bash op Windows 7. mysqldump-opdracht werkt niet

  2. Sequelize samenvoegen van twee tabellen die niet zijn gekoppeld

  3. Max. JSON-kolomlengte in MySQL

  4. Cursor maken met Dynamic SQL in MySQL