Обновление итогов одним запросом 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