Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQL JOIN mit SUMME und 3 Tabellen

Ergebnisse und Ereignisse müssen vorher innerlich verbunden werden sie mit Spielern zu verbinden.

Wir könnten eine Unterabfrage oder Klammern verwenden, um diesen speziellen Join-"Vorrang" zu erzwingen, aber es ist besser, einfach die Reihenfolge der JOINs im SQL-Text zu verwenden und dann den letzten JOIN sorgfältig an den Spielern zu "orientieren" (in diesem Fall RECHTS).

Das COALESCE dient nur zum Konvertieren von NULLen in 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;

Dies erzeugt:

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

Sie können in diesem SQL Fiddle damit spielen .