Ver Mensaje Individual
  #13 (permalink)  
Antiguo 26/03/2004, 18:33
ivan_noe
 
Fecha de Ingreso: enero-2004
Mensajes: 154
Antigüedad: 21 años, 3 meses
Puntos: 0
Vamos por partes colegas: yo puse esto
update prod2 set precio=p1.precio from prod2 p2,prod1 p1 where p2.codigo=p1.codigo

entonces por que poneis esto??:
update prod2 set prod1.precio = prod2.precio from prod1,prod2 where prod2.codigo = prod1.codigo

No veis las diferencias??

Para que entendais el funcionamiento os lo voy a explicar:
Estamos haciendo un update de un campo de una tabla que indicamos así:
update prod2 set precio=
hasta aqui bien,no?
pos ahora tenemos que sacar el valor que queremos asignar y como este valor debe tener una relacion con la tabla que vamos a updatear pues la usamos:
from prod1,prod2 where prod1.codigo=prod2.codigo

Ahora, y creo que es el detalle por el que os perdeis un poco, debemos tener en cuenta que la sentencia update relaciona la tabla a updatear con la tabla que ponemos tras el from con mismo nombre (la tabla prod2 que sale tras el update es la misma que la que sale detras del from) pero el campo que vamos a updatear no puede llevar prefijo, porque a la tabla que ponemos tras el update no podemos asignarle alias, los campos tras el set van sin alias y se refieren a la trabla que se indica delante.
A que ahora ya tiene sentido??
Por eso la sentencia es
update prod2 set precio=prod1.precio from prod1,prod2 where prod1.codigo=prod2.codigo

Si ademas quieres añadir registro nuevos puedes ejecutar la siguiente sentencia
insert into prod2 select * from prod1 where prod1.codigo not in (select codigo from prod2)
(Esto ya lo ha mencionado bakanzipp)
De esta forma con dos sentencias sql te ahoras bucles y historias en asp.

Saludos!!!

-------------------------------------------------------------
SQL Power!!!!!!!!