sql >> Database teknologi >  >> RDS >> Mysql

MySQL JOIN med SUM og 3 borde

Partiturer og begivenheder skal være indre forbundet før ydre-forener dem med spillere.

Vi kunne bruge en underforespørgsel eller parenteser til at tvinge denne særlige join-"præcedens", men det er bedre bare at bruge rækkefølgen af ​​JOINs i SQL-teksten, og derefter forsigtigt "orientere" den sidste JOIN til spillere (LIGE i dette tilfælde).

COALESCE er kun til at konvertere NULLs til 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;

Dette producerer:

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

Du kan lege med det i denne SQL Fiddle .



  1. Hvordan opdaterer man feltet for at tilføje værdi til eksisterende værdi?

  2. Lagring af SHA1-hashværdier i MySQL

  3. Hvordan fjerner man foranstillede nuller fra dag- og månedsværdier i Oracle, når man parser til streng ved hjælp af to_char-funktionen?

  4. Søg i et kolonnenavn på tværs af alle databaser