Ver Mensaje Individual
  #5  
Antiguo 09-08-2008
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.734
Reputación: 20
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
Creo que esto resuelve tu cuestión.
Es la unión de varias consultas parciales.
En el caso de no estar de baja todo el período pedido, se devuelve la fecha_desde o fecha_hasta en que se inició o finalizó la baja.
En el caso de que la fecha de baja/alta esté fuera del período, se devuelve la fecha pedida como parámetro.
Código SQL [-]
/* periodo pedido: desde 10/08/2008 hasta 15/08/2008 */
/* Los que faltaron todo el período */
/* (ejemplo: 01/08/2008 - 31/08/2008) */
select persona,:desde,:hasta from tabla_ausentismo 
where
(fecha_desde <= :desde) and
(fecha_hasta >= :hasta)
union
/* Los que faltaron una vez empezado el período */
/* (ejemplo: 12/08/2008 - 31/08/2008) */
select persona,fecha_desde,:hasta from tabla_ausentismo 
where
(fecha_desde >= :desde) and
(fecha_desde <= :hasta) and
(fecha_hasta >= :hasta)
union
/* Los que faltaron y volvieron antes de terminar el período */
/* (ejemplo: 01/08/2008 - 12/08/2008) */
select persona,:desde,fecha_hasta from tabla_ausentismo 
where
(fecha_desde <= :desde) and
(fecha_hasta >= :desde) and
(fecha_hasta <= :hasta)
union
/* Los que faltaron solo unos dias dentro el período */
/* (ejemplo: 13/08/2008 - 14/08/2008) */
select persona,fecha_desde,fecha_hasta from tabla_ausentismo 
where
(fecha_desde >= :desde) and
(fecha_desde <= :hasta) and
(fecha_hasta >= :desde) and
(fecha_hasta <= :hasta)

Última edición por duilioisola fecha: 09-08-2008 a las 22:04:40.
Responder Con Cita