Ayuda con select de fechas

Roberto
24 de Junio del 2005
Que tal, tengo un problema con una vista y estoy atorado ya, espero alguien me

pueda dar una ayuda.

Tengo una tabla A y una tabla B, la tabla B puede tener N regsitros asociados a

un id de la tabla A. En la tabla B se guardan registros cada vez que se afecta o

se cumple un plazo, por lo que en la tabla B se guarda una fecha y un

consecutivo. El problema es que si tengo una fecha dada, por ejemplo 15/05/2005,
en la tabla B puede o no existir un registro que se encuentre en el mes 05,

hasta ahi no hay problema. Mi problema viene cuando:

A. Necesito mostrar el regsitro mencionado y los de la fecha anterior mas

cercana y la fecha posterior mas cercana. En este caso si es el mes 05, el

reciente mas cercano puede ser 04 y el siguiente mas cercano puede ser 06.

B. el id que busco tal vez no tenga un regitro asociado en el mes 05, pero si

tiene uno en el 03 y otro en el 09, por lo que 05 esta entre estos 2, y por lo

tanto debo mostrarlo tambien.

Como puedo resolver esto para crear una vista?

Si alguien tiene alguna idea lo agradezco de antemano, tengo el query
aproximado, pero me faltan esos 2 pequeños detalles.

carlitros
24 de Junio del 2005
hay una movida que se llama outer join, y aplica en el caso de un join como el tuyo, en la tabla A, el columna fecha especifica: A.campo_fecha(+) = b.campo_fecha

Roberto
24 de Junio del 2005
Gracias por el tip, pero ese es otro problema, en la tabla A no hay una fecha que se relacione a la tabla B, solo el id, y en la tabla B hay muchos id de la tabla A


Rodolfo Reyes
24 de Junio del 2005
A mi se me ocurre hacerlo por medio de UNION'S si entendi bien la descripción de tus tablas, mas o menos sería algo asi:

select b.fecha, b.id
from tablaB b
where b.fecha = '01/05/2005' and
b.id = 1
UNION
(select b.fecha,b.id
from tablab b
where b.fecha IN
(select min c.fecha
from tablab c
where c.fecha > '01/05/2005' and
c.id = b.id
) and
b.id = 1
)
UNION
(select b.fecha, b.id
from tablab b
where b.fecha IN
(select max c.fecha
from tablab c
where c.fecha < '01/05/2005' and
c.id = b.id
) and
b.id = 1
)