Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   Oracle (http://www.forosdelweb.com/f100/)
-   -   Solucionado: Problema con update con columna de otra tabla (http://www.forosdelweb.com/f100/solucionado-problema-con-update-con-columna-otra-tabla-579470/)

mcdios 24/04/2008 06:14

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

mcdios 24/04/2008 08:36

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)


La zona horaria es GMT -6. Ahora son las 09:42.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.