@hronor

[MYSQL] Как заставить правильно считать Update по нескольким таблицам?

Здравствуйте! Появилась проблема с update.
Есть 2 таблицы
users c полем id (int primary), balance (decimal 10,2)
user_deposits id (int primary), user_id, sum (decimal 10,2)
UPDATE user_deposits d,users u SET u.balance=(u.balance + (d.sum/100*5)) WHERE d.user_id=u.id

Все отлично работает, если в таблице user_deposits одна запись с уникальным user_id, а если их несколько, то к users.balance прибавляется только результат последней записи, как сделать чтобы суммировались несколько строк user_deposits? Спасибо.
  • Вопрос задан
  • 201 просмотр
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
UPDATE `users` AS `u`
  JOIN (
    SELECT SUM(`sum`) AS `s`, `user_id`
      FROM `user_deposits`
      GROUP BY `user_id`
  ) AS `d` ON `d`.`user_id` = `u`.`id`
  SET `u`.`balance` = `u`.`balance` + `d`.`s`/100*5
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@Arik
?
UPDATE users u SET u.balance = u.balance + ((SELECT SUM(d.sum) FROM user_deposits d WHERE d.user_id=u.id)/100*5)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы