lunes, 2 de marzo de 2009

Como hacer un sql update de 1 tabla usando 2 tablas

Hola, esto siempre lo he buscado cada vez que necesito hacer un update que me involucra 2 tablas pero en realidad se debe actualizar solo 1.
Esta probado correctamente en MySql que fue para quien lo necesité ahora último, no se como funcione en otras DB.
tabla1 -> codigocli,documento, numero, diasmora,...
tabla2 -> codigocli, documento, numero, fechamvto,...

lo que se necesita es actualizar los dias de mora de la tabla1 usando la fecha de movimiento de la tabla2:
Update tabla1 x,tabla2 y set x.diasmora=datediff(curdate(),y.fechamvto) where x.codigocli=y.codigocli and x.documento=y.documento and x.numero=y.numero

Esto reemplaza aquellos update con subquery.

7 comentarios:

Anónimo dijo...

Funciona para acces tambien, busque por tadas partes y he aqui me encontre con la solucion, Gracias

John Harold dijo...

Excelente, mira que ha mi también me habia pasado y la encontré por mi cuenta, por eso la escribí en el blog para que no se me olvidara. Un gusto que te haya servido.

Anónimo dijo...

Excelente amigo gracias...

Anónimo dijo...

Hola, vaya que me haz ayudado a descubrir que no era imposible lo que yo necesitaba hacer.

Sin embargo mi problema no queda resuelto del todo, pues necesito un ORDER BY y me aparece el error 1221 - Incorrect usage of UPDATE and ORDER BY tienes alguna idea de como debe usarse ??

John Harold dijo...

Anotame el sql completo en el que necesitas el order by para analizarlo.

Anónimo dijo...

Despues de dos años sigue siendo excelente lo que compartiste, ya tenía 2 días buscando este query, gracias.

John Harold dijo...

Excelente, es un gusto saber que te ha servido. Feliz día.