Here are my tables:
Players
Name | DoB | Ranking |
---|---|---|
Ben | 01/01/1999 | 1 |
Tom | 02/01/1999 | 1 |
Sam | 03/01/1999 | 1 |
Sam | 03/01/1999 | 2 |
Ranking
Ranking | Points |
---|---|
1 | 100 |
2 | 50 |
I want to join the tables and add the total points for each player then output this table.
Output
Name | DoB | Points |
---|---|---|
Ben | 01/01/1999 | 100 |
Tom | 02/01/1999 | 100 |
Sam | 03/01/1999 | 150 |
I am using this statement currently:
SELECT Matches.Name, Matches.DoB, Matches.Rankin, SUM(Ranking.Points) FROM Matches, Ranking WHERE Matches.Ranking = Ranking.Ranking GROUP BY Matches.Name
However I am getting this error when I run the code:
SELECT Matches.Name, Matches.Ranking, SUM(Ranking.Points) FROM Matches, Ranking WHERE Matches.Ranking = Ranking.Ranking GROUP BY Matches.Name LIMIT 0, 1000 Error Code: 1055. Expression #2 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'ad.Matches.Ranking' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by 0.00044 sec
New to SQL so any help with this would be much appreciated 🙂
Advertisement
Answer
You have to add all of your field in Select to the group by
SELECT Matches.Name, Matches.DoB, Matches.Rankin, SUM(Ranking.Points) FROM Matches, Ranking WHERE Matches.Ranking = Ranking.Ranking GROUP BY Matches.Name, Matches.DoB, Matches.Rankin