Programación en castellano
Inicio > Foros > Bases de datos y SQL > Update con select anidado
-Foros de debate

Bases de datos y SQL
Lista de foros | Lista de mensajes de este foro

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.

Muchas Gracias

 
Re: Update con select anidado
Enviado por mati el día 28 de abril de 2005

Hola no lo he probado pero me imagino que si que funcione
UPDATE TABLA1 SET tabla1.Campo1=Tabla2.CampoX FROM Tabla1, Tabla2 WHERE Tabla1.Id=Tabla2.Id

 
Re: Re: Update con select anidado
Enviado por trazom el día 28 de abril de 2005

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);

Saludos.

 
Re: Re: Re: Update con select anidado
Enviado por Gabriel el día 12 de mayo de 2005

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)

Saludos

 
Re: Re: Re: Re: Update con select anidado
Enviado por Gloria el día 17 de mayo de 2005

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

 
Re: Re: Re: Re: Re: Update con select anidado
Enviado por Isaías Islas el día 17 de mayo de 2005

UPDATE Tabla SET id_2 = 'x' WHERE id_1 IN (SELECT id_1 FROM otratabla)

 
Re: Re: Re: Re: Re: Re: Update con select anidado
Enviado por ripquik el día 19 de mayo de 2005

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.

 
Update con select anidado
Enviado por Gloria el día 20 de mayo de 2005

Me podrias explicar exactamente como seria¡?
Gracias

 







Re: Update con select anidado
Enviado por alxcadillac el día 10 de mayo de 2006

Yo ya lo he probado en MySQL y puedo Asegurar que funciona. Fue exitoso con el siguiente código:

update tutor set id_domicilio = '+/xwIMaVC3Q=' where Id_tutor=(select Id_tutor from alumno where matricula='LOLF06001');

Si te sirve de algo, checalo.

 
Re: Re: Update con select anidado
Enviado por Tina el día 10 de mayo de 2006

QUIERO ANIDAR LA DATA PARA EXTRAER EL UPDATE.

MANDARME EL CODIGO A sastamente@yahoo.es

 
Re: Re: Re: Update con select anidado
Enviado por Punkerr el día 22 de mayo de 2006

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

 
Re: Re: Re: Re: Update con select anidado
Enviado por elvacunador el día 5 de marzo de 2008

este es un anidado sobre la misma tabla para cambiar a mayuscula

update tabla set campo=upper(campo)

 





Tienda
Patrocinados
 

Copyright © 1999-2007 Programación en castellano. Todos los derechos reservados.
Formulario de Contacto - Datos legales - Publicidad
Mantenida por: Claudio y Dani.

Hospedaje web y servidores dedicados linux por Ferca Network

red internet: musica mp3 | amor | hospedaje web linux | registro de dominios | servidores dedicados
más internet: comprar | gratis | posicionamiento en buscadores | decoración libre | gifs animados