Обновление итогов одним запросом sql

У меня есть стол с игроками и стол с профилями. Профили (пользователи) могут "требовать" игроков, так что поле "профиль" в записи игрока будет установлено на идентификатор профиля.

Мне нужно свойство итоговой оценки (которое содержит сумму всех предыдущих значений баллов) в моей таблице профилей. Чтобы вычислить данные, принятые в прошлом, я написал следующий запрос:

UPDATE profiles,players
SET profiles.`totalscore` = profiles.`totalscore` + players.`score`
WHERE players.`profile`=profiles.`id`

Однако для totalalscore устанавливается последнее найденное значение. Как бы я решить это?

1 ответ

Решение

Вы должны использовать группу по.

UPDATE profiles
inner join (
select profileid,SUM(score) as playersscore
from players
group by
profileid) players
ON players.profileid=profiles.id
SET profiles.totalscore = profiles.totalscore + playersscore
Другие вопросы по тегам