Update en una tabla
Hola amig@s:
Tengo una duda en la funcion de update.
Quiero hacer un update en una clumna col1 de la tabla T1, donde el nuevo valor a introducir es el resultado de una select entre 3 tablas difrentes, eso es posible por ejemplo querer introducir la suma de r valores de 3 tablas difrentes en la tabla T1.
Alquien me puede echar una mano, gracias por todo
Tengo una duda en la funcion de update.
Quiero hacer un update en una clumna col1 de la tabla T1, donde el nuevo valor a introducir es el resultado de una select entre 3 tablas difrentes, eso es posible por ejemplo querer introducir la suma de r valores de 3 tablas difrentes en la tabla T1.
Alquien me puede echar una mano, gracias por todo
UPDATE T1
SET col1 = (SELECT /*LO QUE SEA*/)
WHERE condicion
debes hacerlo de uno en uno y la consulta select debe devolver un solo campo y un solo registro, si no lo haces asi no te funciona
SET col1 = (SELECT /*LO QUE SEA*/)
WHERE condicion
debes hacerlo de uno en uno y la consulta select debe devolver un solo campo y un solo registro, si no lo haces asi no te funciona
Hola Mario, gracias por tu respuesta, pero no es realmente lo q quiero hacer, no quiero ir actualizando registro por registro, sino varias lineas a la vez.
update tabla1 t1 set t1.campo=(select t2.campo from tabla2 t2,tabla3 t3,tabla4 t4 where t2.campox=t1.capox)
si las 4 tablas estan relacionadas por la cave primara no se iria actualizando las filas por la clave primaria de golpe todas????.
Un saludo y gracias de todas formas por tu pronta resupuesta
update tabla1 t1 set t1.campo=(select t2.campo from tabla2 t2,tabla3 t3,tabla4 t4 where t2.campox=t1.capox)
si las 4 tablas estan relacionadas por la cave primara no se iria actualizando las filas por la clave primaria de golpe todas????.
Un saludo y gracias de todas formas por tu pronta resupuesta
Voy a enviarte un Script, que tuve que desarrollar hace poco, para la empresa donde trabajo,
este Script actualiza varios registros a la vez, lo que veo es que en la condici贸n no estas usando la clave primaria que estas nombrando
update miembros
set cod_mci = t.codigo_mci,
Nombres = t.nombres,
apellidos = t.apellidos,
Fecha_nacimiento = t.fecha_nacimiento,
direccion = t.direccion,
telefono1 = t.telefono_casa,
telefono2 = t.telefono_oficina,
celular = t.celular
from miembros as m,temp_actualizar_lideres as t
where m.tipo_documento = t.tipo_documento and
m.num_documento = t.num_documento
En la tabla temp_actualizar_lideres guardo los cambios que se van ha hacer en la tabla lideres y los actualizo todos de una vez y en la condici贸n igualo la clave primaria que en este caso es compuesta.
Si no te funciona debes utilizar cursores, que son bastante complejos pero muy utiles
este Script actualiza varios registros a la vez, lo que veo es que en la condici贸n no estas usando la clave primaria que estas nombrando
update miembros
set cod_mci = t.codigo_mci,
Nombres = t.nombres,
apellidos = t.apellidos,
Fecha_nacimiento = t.fecha_nacimiento,
direccion = t.direccion,
telefono1 = t.telefono_casa,
telefono2 = t.telefono_oficina,
celular = t.celular
from miembros as m,temp_actualizar_lideres as t
where m.tipo_documento = t.tipo_documento and
m.num_documento = t.num_documento
En la tabla temp_actualizar_lideres guardo los cambios que se van ha hacer en la tabla lideres y los actualizo todos de una vez y en la condici贸n igualo la clave primaria que en este caso es compuesta.
Si no te funciona debes utilizar cursores, que son bastante complejos pero muy utiles
lo ke yo haria es ke extraeria cada uno de los valore sy los insertaria en una lista o un arreglo y despues los tomaria y los sumaria para despues realizar la actualizacion.
Set obrs = ObConn.Execute("select ko_cve1po from kcveora where ko_cvetea='" & List3.List(i) & "' and ko_cvecol='" & color2 & "'")
a1 = obrs.Fields(0)
Set obrs = ObConn.Execute("select ko_cve2po from kcveora where ko_cvetea='" & List3.List(i) & "' and ko_cvecol='" & color2 & "'")
a2 = obrs.Fields(0)
Set obrs = ObConn.Execute("select ko_cve3po from kcveora where ko_cvetea='" & List3.List(i) & "' and ko_cvecol='" & color2 & "'")
a3 = obrs.Fields(0)
clave = a1 + a2 + a3
este un ejemplo de algo ke yo hice, como te podras dar cuenta utilizo una misma tabla lo unico ke tendrias ke hacer tu es utilizar otras 2 tablas pero el procedimiento es lo mismo.
Obtener los valores por separado.
Set obrs = ObConn.Execute("select ko_cve1po from kcveora where ko_cvetea='" & List3.List(i) & "' and ko_cvecol='" & color2 & "'")
a1 = obrs.Fields(0)
Set obrs = ObConn.Execute("select ko_cve2po from kcveora where ko_cvetea='" & List3.List(i) & "' and ko_cvecol='" & color2 & "'")
a2 = obrs.Fields(0)
Set obrs = ObConn.Execute("select ko_cve3po from kcveora where ko_cvetea='" & List3.List(i) & "' and ko_cvecol='" & color2 & "'")
a3 = obrs.Fields(0)
clave = a1 + a2 + a3
este un ejemplo de algo ke yo hice, como te podras dar cuenta utilizo una misma tabla lo unico ke tendrias ke hacer tu es utilizar otras 2 tablas pero el procedimiento es lo mismo.
Obtener los valores por separado.
