Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Oracle »

Solucionado: Problema con update con columna de otra tabla

Estas en el tema de Solucionado: Problema con update con columna de otra tabla en el foro de Oracle en Foros del Web. Hola, necesito actualizar los registros de una tabla con valores que se sacan de otra. La query que me saca los datos es: select o.IDOFICINA ...
  #1 (permalink)  
Antiguo 24/04/2008, 06:14
 
Fecha de Ingreso: noviembre-2004
Mensajes: 4
Antigüedad: 19 años, 4 meses
Puntos: 0
Solucionado: Problema con update con columna de otra tabla

Hola, necesito actualizar los registros de una tabla con valores que se sacan de otra. La query que me saca los datos es:
select o.IDOFICINA idOficina, o.IDTIPOHORARIO tipoHorario_Viejo, m.IDTIPOHORARIO tipoHorario_Nuevo, m.descripcion
from dtoficina o, MSTIPOHORARIOOFICINA m
where lower(trim(o.TIPOHORARIOBASIS))=lower((m.DESCRIPCI ON))

Para el resultado de esta query, tengo que hacer un update de los idOficina que salgan en esa query, cambiar el tipo de horario viejo por el nuevo.
Sería algo como:
UPDATE dtoficina o
SET (idoficina, IDTIPOHORARIO) =
(
SELECT o.IDOFICINA idOficina, m.IDTIPOHORARIO IDTIPOHORARIO
from dtoficina o, MSTIPOHORARIOOFICINA m
where lower(trim(o.TIPOHORARIOBASIS))=lower((m.DESCRIPCI ON))
)
where idoficina in (SELECT o.IDOFICINA idOficina
from dtoficina o, MSTIPOHORARIOOFICINA m
where lower(trim(o.TIPOHORARIOBASIS))=lower((m.DESCRIPCI ON)));

Pero esta query no funciona porque la select interna del set devuelve más de una fila.
Necesito ayuda.
Gracias

Última edición por mcdios; 24/04/2008 a las 09:06 Razón: Pregunta solucionada
  #2 (permalink)  
Antiguo 24/04/2008, 08:36
 
Fecha de Ingreso: noviembre-2004
Mensajes: 4
Antigüedad: 19 años, 4 meses
Puntos: 0
Re: Problema con update con columna de otra tabla

Ya lo solucioné. Por si le sirve a alguien:
UPDATE DTOFICINA o SET IDTIPOHORARIO =
(
SELECT m.IDTIPOHORARIO
FROM MSTIPOHORARIOOFICINA m
WHERE LOWER(trim(o.TIPOHORARIOBASIS))=LOWER((m.DESCRIPCI ON))
)
WHERE LOWER(trim(o.TIPOHORARIOBASIS)) IN (
SELECT
LOWER((MSTIPOHORARIOOFICINA.DESCRIPCION)) FROM MSTIPOHORARIOOFICINA)
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:33.