Я пытаюсь суммировать столбцы для отображения статистики на спортивном веб-сайте. Мой запрос mysql:Группа по запросу не возвращает все значения
SELECT s.schoolid, s.season, s.playerid, SUM(s.serviceaces) AS sumAces, SUM(s.attackkills) AS sumKills, SUM(s.assists) AS sumAssists, p.fname, p.lname
FROM `stats` AS s
LEFT JOIN `players` AS p ON p.id = s.playerid
GROUP BY s.playerid
HAVING s.schoolid = 2 AND s.season = 2015
Это даст мне 9 записей. Это должно дать мне 12, так как в команде 2 игрока из 12 человек, и у всех есть статистика. Если я поменяю свой запрос на простой запрос на выбор
SELECT s.*, p.fname, p.lname
FROM `stats` AS s
LEFT JOIN `players` AS p ON p.id = s.playerid
WHERE s.schoolid = 2 AND s.season = 2015
Я возвращаю 24 записи. Это имеет смысл, так как для этой команды в игре насчитывается две игры, рассчитанные на 12 игр.
Что я делаю неправильно, когда пытаюсь суммировать свои столбцы и группу игроком?
Редактировать Вот SQL ссылка скрипку - http://sqlfiddle.com/#!9/e5cf5/1/0)
Я нашел проблему, пропавшие люди имеют статистику с 2014 года я буду читать на ссылку Олли, чтобы увидеть, если это моя проблема.
Так появляется мое решение так легко, как добавление WHERE s.season = 2015 И s.schoolid = 2 для окончательного запроса
SELECT s.schoolid, s.season, s.playerid, SUM(s.serviceaces) AS sumAces, SUM(s.attackkills) AS sumKills, SUM(s.assists) AS sumAssists, p.fname, p.lname
FROM `stats` AS s
LEFT JOIN `players` AS p ON p.id = s.playerid
WHERE s.season = 2015
GROUP BY s.playerid
пропущенного ответ Hitesh как я редактировал это. Он понял это правильно.
Возможно, вы злоупотребляете пагубным расширением MySQL для GROUP BY. Прочитай это. https://dev.mysql.com/doc/refman/5.6/en/group-by-handling.html –