Ver Mensaje Individual
  #7 (permalink)  
Antiguo 31/07/2009, 10:34
Avatar de moNTeZIon
moNTeZIon
 
Fecha de Ingreso: enero-2005
Ubicación: Lliçà de Munt - BCN
Mensajes: 1.625
Antigüedad: 19 años, 4 meses
Puntos: 9
Respuesta: ¿Cómo harías esta consulta?

Lo más que me está saliendo es la misma SQL haciéndole el CAST a los campos de tipo Hora para que trabajen como tal:
Código SQL:
Ver original
  1. SELECT P.*
  2. FROM PARTESTRABAJO P
  3. INNER JOIN ASISTENCIAS A ON P.CodigoTrabajador=A.CodigoTrabajador AND P.Fecha=A.Fecha
  4. WHERE CAST(P.HoraFin AS DateTime) NOT BETWEEN CAST(A.HoraInicio AS DateTime) AND CAST(A.HoraFin AS DateTime)
  5. AND P.CodigoTrabajador='ERIC'
  6. AND P.Fecha = '20090710'
Pero como comenté, aparecen los cuatro registros de PARTESTRABAJO y uno más repetido.
Veo que lo que está haciendo esta consulta es mostrar el registro de PARTESTRABAJO una vez por cada registro de ASISTENCIAS y luego elimina las que no cumplen el WHERE. Pero exactamente no es eso.
Podemos ver que ese día hay 2 ASISTENCIAS, la consulta comprueba la HoraFin del PARTETRABAJO con cada una de ellas. Lo correcto sería que si en una de ellas ya está correcta (ya se encuentra la HoraFin dentro de la franja de alguna de las asistencias) no apareciera.. uff, no se si me he explicado correctamente... Espero que si.
Gracias por el esfuerzo a quien se tome un momento con esto.
Saludos.
__________________
..:: moNTeZIon ::..