sql para actualizar un campo de 1 tabla
Publicado por ELIA (3 intervenciones) el 08/10/2003 14:27:03
Necesito actualizar un campo de una tabla, con el resultado de la suma de dos campos de otras dos tablas, es decir la tabla
A tiene un campo CAMPOA, que debe ser actualizado con la suma de los campos CAMPOB y CAMPOC pertenecientes a las tablas B
y C respectivamente, siempre para una clave concreta, es decir para un producto y fecha iguales en cada tabla.
Yo he intentado hacerlo mediante subconsultas pero me he bloqueado. Tambien lo he intentado con cursores pero no me ha
salido y creo q lo q debo de poner es un cursor. Podrías darme una pista?
Os expongo donde me ha bloqueado, igual me podeís dar una pista, porq sql es muy potente.
update tablaA
set CAMPOA=(select (B.CAMPOB + C.CAMPOC) sumacampoa
from tablaB B, tablaC C
WHERE (B.producto=c.producto) AND (B.fecha= C.fecha))
where (producto,fecha )= (select B.producto, B.fecha from tablaB B, tablaC C
WHERE (B.producto=c.producto) AND (B.fecha= C.fecha));
El error me dice q la subconsulta de una sola fila devuelve mas de una fila. FALTA UN CURSOR. GRACIAS A TODOS.
A tiene un campo CAMPOA, que debe ser actualizado con la suma de los campos CAMPOB y CAMPOC pertenecientes a las tablas B
y C respectivamente, siempre para una clave concreta, es decir para un producto y fecha iguales en cada tabla.
Yo he intentado hacerlo mediante subconsultas pero me he bloqueado. Tambien lo he intentado con cursores pero no me ha
salido y creo q lo q debo de poner es un cursor. Podrías darme una pista?
Os expongo donde me ha bloqueado, igual me podeís dar una pista, porq sql es muy potente.
update tablaA
set CAMPOA=(select (B.CAMPOB + C.CAMPOC) sumacampoa
from tablaB B, tablaC C
WHERE (B.producto=c.producto) AND (B.fecha= C.fecha))
where (producto,fecha )= (select B.producto, B.fecha from tablaB B, tablaC C
WHERE (B.producto=c.producto) AND (B.fecha= C.fecha));
El error me dice q la subconsulta de una sola fila devuelve mas de una fila. FALTA UN CURSOR. GRACIAS A TODOS.
Valora esta pregunta


0