Hola Flaviovich.
Gracias por responder. La verdad es que había pensado en esa SQL pero no me devolvía exactamente lo que necesito.
Te cuento.
En la tabla ASISTENCIAS puede haber N Asistencias para un mismo trabajador en un mismo día.
Igual que en PARTESTRABAJO que también puede haber N registros del mismo trabajador en un mismo día.
El tema está en controlar que las HoaFin de la tabla PARTESTRABAJO estén comprendidas en las franjas entre HoraInicio y HoraFin de la tabla ASISTENCIAS, del mismo trabajador y el mismo día.
Para simplificarlo, le he anadido algo más al WHERE de tu consulta, quedando así:
Código SQL:
Ver originalSELECT P.*
FROM PARTESTRABAJO P
INNER JOIN ASISTENCIAS A ON P.CodigoTrabajador=A.CodigoTrabajador AND P.Fecha=A.Fecha
WHERE P.HoraFin NOT BETWEEN A.HoraInicio AND A.HoraFin
AND P:CodigoTrabajador='ERIC'
AND P.Fecha = '20090710'
De esta forma puedo comprobar si realmente funciona la consulta, puesto que el día 10 de Julio el trabajador ERIC tiene un PARTE cerrado a las 20:09 cuando su última asistencia termina a las 19:43.
Por lo tanto, en este caso lo que debería obtener como resultado son los campos de ese registro de la tabla PARTESTRABAJO, que terrmina a las 20:09
Actualmente existen 4 PARTESTRABAJO de ese día para ese trabajador, mientras que en la tabla ASISTENCIAS existen 2 (la de la mañana y la de la tarde).
Con la consulta que acabo de escribir, obtengo 5 registros:
Los 4 partes que tiene ese día + uno más repetido, que precisamente es el registro que tendría que salir solo, o sea, el que termina a las 20:09
Por qué motivo sale este resultado y como podría aislar unicamente el registro que necesito?
Espero que me puedan ayudar.
Muchas Gracias!!
Para más información, pongo una imagen con los registros existentes del trabajador ERIC el dia 10 de Julio, en los que se puede ver claramente que el parte que termina a las 20:09 termina fuera de la asistencia, que ésta termina a las 19:43.