Mysql
 sql >> Baza danych >  >> RDS >> Mysql

MySQL JOIN z SUM i 3 tabelami

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 .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Co nowego dla nie więcej varchar(255)

  2. Próba migracji lokalnego serwera mysql do AWS

  3. Dostęp do bazy danych SQL przez PHP?

  4. Programowanie link administratora WordPress przekierowujący do aktywnej strony

  5. MySQL - CONCAT dwa pola i użyj ich w klauzuli WHERE