SQL - Update con un SELECT

   
Vista:

Update con un SELECT

Publicado por Paolo Santos (4 intervenciones) el 02/01/2011 06:15:58
Buena TArde...

pues tengo un problema para muchos diran que sencillo pero no se que me falta para hacer un update de un campo de una tabla y que lo haga de un select a otro campo pero de otra tabla, cumpliendo cada una diferentes condiciones y lo primero que hice que fue lo siguiente con una subconsulta:

UPDATE TBL_RESULTADO
SET COSTO_EXAMEN=(SELECT COSTO_EXAMEN FROM TBL_COSTO_GRUPO
WHERE COD_GRUPO_EXAMEN=1 AND COD_ENTIDAD=2)
WHERE COD_GRUPO_EXAMEN=1 AND COD_TIPO_EXAMEN IN (1,2)

pero me da error luego leyendo un poco por el internet recomendaban otra forma y probe hacer lo asi

UPDATE TBL_RESULTADO
SET COSTO_EXAMEN=(SELECT COSTO_EXAMEN FROM TBL_COSTO_GRUPO
WHERE TBL_RESULTADO.COD_GRUPO_EXAMEN = TBL_COSTO_GRUPO.COD_GRUPO_EXAMEN AND TBL_COSTO_GRUPO.COD_GRUPO_EXAMEN=1 AND TBL_COSTO_GRUPO.COD_ENTIDAD=2)
WHERE COD_GRUPO_EXAMEN=1 AND COD_TIPO_EXAMEN IN (1,2)

pero tampoco me funciona, por favor me podrian ayuda, cabe notar que solo un campo es comun para ambas tablas pero las otras condiciones son diferentes campos, saludos y gracias por la ayuda..
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Update con un SELECT

Publicado por Miguel (16 intervenciones) el 03/01/2011 09:14:55
UN CONSEJO, TE HACES EL SELECT DEL QUE QUIERES SACAR EL DATO A ACTUALIZAR Y CON EL QUE VAS A ACTUALIZAR, ASÍ:

SELECT T1.COSTO_EXAMEN, T2.COSTO_EXAMEN
FROM TBL_RESULTADO T1
INNER JOIN TBL_COSTO_GRUPO T2
ON T1.COD_GRUPO_EXAMEN=T2.COD_GRUPO_EXAMEN
WHERE T2.COD_GRUPO_EXAMEN=1 AND T2.COD_ENTIDAD=2
T1.COD_GRUPO_EXAMEN=1 AND T1.COD_TIPO_EXAMEN IN (1,2)

Y DESPUES SUSTITUYES EL SELECT POR EL UPDATE, A PARTIR DEL FROM TODO ES IGUAL:

UPDATE TBL_RESULTADO
SET COSTO_EXAMEN=T2.COSTO_EXAMEN
FROM TBL_RESULTADO T1
INNER JOIN TBL_COSTO_GRUPO T2
ON T1.COD_GRUPO_EXAMEN=T2.COD_GRUPO_EXAMEN
WHERE T2.COD_GRUPO_EXAMEN=1 AND T2.COD_ENTIDAD=2
T1.COD_GRUPO_EXAMEN=1 AND T1.COD_TIPO_EXAMEN IN (1,2)

SALUDOS,
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Update con un SELECT

Publicado por Ariel Bálsamo (9 intervenciones) el 07/01/2011 14:40:25
Hola. Otra manera de hacer el UPDATE es:

UPDATE TBL_RESULTADO, TBL_COSTO_GRUPO
SET TBL_RESULTADO.COSTO_EXAMEN = TBL_COSTO_GRUPO.COSTO_EXAMEN
WHERE TBL_RESULTADO.COD_GRUPO_EXAMEN = 1
AND TBL_RESULTADO.COD_TIPO_EXAMEN IN (1,2)
AND TBL_COSTO_GRUPO.COD_ENTIDAD = 2
AND TBL_RESULTADO.COD_GRUPO_EXAMEN = TBL_COSTO_GRUPO.COD_GRUPO_EXAMEN;

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Update con un SELECT

Publicado por Paolo Santos (4 intervenciones) el 16/01/2011 19:30:52
Gracias Ariel tu opción funciono de mil maravillas es justo lo que estaba buscando mil gracias, ahora Miguel probe tu ocpión pero me da error de sintaxis no se que habra ocurrido e intente solucionarlo pero no hay problema siempre gracias por tu tiempo, salduos a todos y se puede dar solucionado el tema la solucion correcta es la de Ariel.. saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Update con un SELECT

Publicado por juanrrec (1 intervención) el 13/11/2012 21:11:55
tengo un update tabla1 set campo=1 where campo2=2 and campo3=100, esta seria la forma simple y de a un registro, tengo un select resultante de otras tablas con los valores equivalentes a campo2 y campo3 de la tabla1 , La pregunta es como hago para relacionar tabla1 con sus campo2 y campo3 con el select resultante de las otras tablas
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Update con un SELECT

Publicado por adry_fab (1 intervención) el 13/11/2012 21:26:03
Aunque el hilo de la pregunta es de hace más de un año, supongo que juanrrec no supo donde más buscar.
Creo que intenta decir que tiene un select parecido al siguiente

select tb1.campo1, tb2.campo2, tb3.campo3
from tabla1 tb1, tabla2 tb2, tabla3 tb3
where tb1.campox = tb2.campox
and tb2.campoy = tb3.campoy

Donde en tabla1 tengo que actualizar los datos de campo2 y campo3

Generalmente uso el select que me obtiene los datos y cambio la palabra select por update y pongo los set respectivos, como muestro a continuación.

update tabla1
set campo2 = tb2.campo2, campo3 = tb2.campo3
-- select tb1.campo1, tb2.campo2, tb3.campo3
from tabla1 tb1, tabla2 tb2, tabla3 tb3
where tb1.campox = tb2.campox
and tb2.campoy = tb3.campoy

Espero que sirva mi explicación.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar