PAG
Новичок
Двойной update с использованием данных из обеих таблиц
Приветствую!
Подскажите, как красиво решить проблему:
есть две таблицы, связанные по ключам.
b_user и gp_users
в одной хранится текущее значение, а в другой накопленное.
необходимо по всем пользователям пройти и обновить данные. есть определенный порог - для примера 50, который нужно сохранить в текущей таблице (gp_users), если там уже больше, то излишек перенести в накопленное (приплюсовать к значению в b_user), если же в текущей не хватает, то недостающее взять из накопенного.
делаю я это все таким запросом:
я думал делать дополнительную вставку пустых строчек в текущую таблицу, но это как-то криво... да и как их туда вставить нормально? не приходит на ум.
подскажите, можно ли сделать это все одним запросом?
Приветствую!
Подскажите, как красиво решить проблему:
есть две таблицы, связанные по ключам.
b_user и gp_users
в одной хранится текущее значение, а в другой накопленное.
необходимо по всем пользователям пройти и обновить данные. есть определенный порог - для примера 50, который нужно сохранить в текущей таблице (gp_users), если там уже больше, то излишек перенести в накопленное (приплюсовать к значению в b_user), если же в текущей не хватает, то недостающее взять из накопенного.
делаю я это все таким запросом:
и он нормально работает, но проблема в том, что если во временной таблице не хватает какого-то пользователя, то он и не обрабатывается, а мне нужно для таких добавлять сумму из накопительной таблицы.UPDATE b_user AS ua, gp_users AS gu SET ua.BONUS_CACHE=ua.BONUS_CACHE+gu.value-LEAST(GREATEST(50,IF(ua.PE_CUR_WEEK>0,ua.PE_CUR_WEEK,999999999999)),gu.value+ua.BONUS_CACHE), gu.fixvalue=LEAST(GREATEST(50,IF(ua.PE_CUR_WEEK>0,ua.PE_CUR_WEEK,999999999999)),gu.value+ua.BONUS_CACHE) WHERE ua.ID=gu.b_user_id AND gu.week=2
я думал делать дополнительную вставку пустых строчек в текущую таблицу, но это как-то криво... да и как их туда вставить нормально? не приходит на ум.
подскажите, можно ли сделать это все одним запросом?