Privacidad: Recuerde que la información escrita en los foros de programación es 100% pública y que su ip será registrada asociada a su mensaje. Si encuentra un mensaje fuera de lugar, por favor, notifiquelo para su revisión y eliminación.
Update con select anidado
Enviado por JuanPablo el día 28 de abril de 2005
Como puedo actualizar los datos de un campo de una tabla extrayendolos de otra tabla?. Se me había ocurrido algo como esto:
UPDATE TABLA1 SET Campo1=(SELECT Tabla2.CampoX FROM Tabla1, Tabla2 WHERE Tabla1.Id=Tabla2.Id).
aclaración: Tanto Tabla1.Campo1 como Tabla2. CampoX son del mismo tipo, ese no sería el error.
Esto no funciona pero debe haber alguna forma de hacer esto con una consulta SQL.
No se de que tipo de error estas hablando, de sintaxis no creo.
El problema es que si ejecutas el update como lo hiciste, es decir:
UPDATE TABLA1
SET Campo1=(SELECT Tabla2.CampoX
FROM Tabla1, Tabla2
WHERE Tabla1.Id=Tabla2.Id)
no solo te va a actualizar los registros que coincidan con la condicion del WHERE, sino que al resto de los registros de la tabla les pondra NULL al campo Campo1. Tienes que agregar una condicion para que restrinja unicamente los registros que coinciden en el campo Id.
Por ej:
UPDATE TABLA1
SET Campo1=(SELECT Tabla2.CampoX
FROM Tabla1, Tabla2
WHERE Tabla1.Id=Tabla2.Id)
WHERE EXISTS (SELECT null
FROM Tabla1, Tabla2
WHERE Tabla1.Id=Tabla2.Id);
Hola, ya estaba en el mismo problema y con la ayuda de un compañero de trabajo pude solucionarlo de la siguiente manera (solo aplicable a los motores de busqueda que acepten un Update..From (sql server estoy seguro que si, en Oracle no se puede y en MySQL no se...)
UPDATE {alias tabla del insert} SET {nombrecampo}={campo2}
FROM tabladelinsert as TI
{tipo de join (inner,left,right)} tabla2 ON (TI.campoid=tabla2.campoid)
Hola! Necesito vuestra ayuda.
Lo que necesito es lo siguiente:
Mi tabla tiene dos campos:
tabla= id_1, id_2
Necesito que si id_1 esta en otra tabla, meter la cadena 'x' en id_2, me explico¿?
Gracias
lo suyo es que hagais un procedimiento almacenado. el procedimiento almacenado te permete realizar primero el select padre y guardar el resultado en una variable, posteriormente haces el update y le pones la condición igualandola con la variable obtenida anteriormente.
Hola yo tenia el mismo problema, lo que paso fue que tenia una tabla de articulos que manejaban su descripcion y otra tabla en el que estan los mismos articulos incluyendo su descripcion nuevamente cosa que no deberia existir pero bueno... la cuestion fue que hice cambios en la tabla articulos ya que algunos productos tenian descripcion errorneas... para actualizar otra tabla que contenia el campo descripcion ejecute esto (corrijanme si estoy mal):
UPDATE ARTICULOVINETA SET ARTICULOVINETA.DSARTI=ARTICULO.DSARTI FROM ARTICULOVINETA
INNER JOIN ARTICULO ON ARTICULOVINETA.CDARTI=ARTICULO.CDARTI
WHERE ARTICULOVINETA.CDARTI=ARTICULO.CDARTI