У меня есть таблица T1 (master) и T2 (detail). В таблице T1 есть поле mult, которое вначале во всей таблице 1.
Делаю update
update T1 join T2 on T1.id = T2.master_id
set T1.mult = T1.mult * T1.count
Т.е. я хочу в поле sum записать произведение всех его деталей. Если запустить в лоб, то в результате мы получим в поле mult результат лишь одного (последнего выполненного в запросе) произведения. Потому что в процессе выполнения update, MySQL не изменяет значение T1.mult из правой части. Как мне сделать в итоге, чтобы после значение правой части менялось в процессе выполнения update?
PS у меня формула правой части намного сложнее, так что применение групповой операции умножения мне не подходит- мне нужно именно итерационное изменение значения правой части)
Здравствуйте, Аноним, Вы писали:
А>У меня есть таблица T1 (master) и T2 (detail). В таблице T1 есть поле mult, которое вначале во всей таблице 1. А>Делаю update
А>update T1 join T2 on T1.id = T2.master_id А>set T1.mult = T1.mult * T1.count
Гораздо проще и быстрее понять задачу, если есть мини-набор данных и желаемый результат выполнения запроса. По формулировке вашей задачи есть вопросы…
А>Т.е. я хочу в поле sum записать произведение всех его деталей
Наверно поле mult из T1 или все-таки существует поле sum, но о нем вы не упоминали?
А>Если запустить в лоб, то в результате мы получим в поле mult результат лишь одного (последнего выполненного в запросе) произведения. Потому что в процессе выполнения update, MySQL не изменяет значение T1.mult из правой части.
В вашем вычислении, используется T1.count, о котором вы так же не рассказывали, что это за поле? Отмечу, что при обновлении данных в вашем запросе совсем не используется таблица T2, т.е. она не влияет на результат вычислений.