MySQL Update ... join
От: Аноним  
Дата: 24.06.13 12:27
Оценка:
Привет всем,

У меня есть таблица 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 у меня формула правой части намного сложнее, так что применение групповой операции умножения мне не подходит- мне нужно именно итерационное изменение значения правой части)
Re: MySQL Update ... join
От: Olaf Россия  
Дата: 24.06.13 14:17
Оценка:
Здравствуйте, Аноним, Вы писали:

А>У меня есть таблица 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, т.е. она не влияет на результат вычислений.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.