Hola.
No pretendo que hagan el trabajo por mí. Lo que tengo hasta ahora es la consulta que pongo a continuación, pero ésta sólo me trae los certificados médicos que no tienen la totalidad de las inasistencias cargadas, pero tienen al menos una. Lo que me falta es obtener los certificados que no tienen NINGUNA inasistencia asociada, según el rango de fechas que cubre el certificado y la fecha de cada inasistencia. No tengo idea de cómo encararlo y por eso pido ayuda.
Código:
SELECT certificado_medico.*
FROM certificado_medico
INNER JOIN empleado ON certificado_medico.id_empleado = empleado.id_empleado
INNER JOIN
(SELECT certificado_medico.id, COUNT(*) AS 'cantidad'
FROM inasistencia
INNER JOIN certificado_medico ON inasistencia.id_empleado = certificado_medico.id_empleado
WHERE inasistencia.fecha BETWEEN certificado_medico.fecha_inicio_vigencia AND DATE_ADD(certificado_medico.fecha_inicio_vigencia, INTERVAL(certificado_medico.dias_reposo - 1) day)
GROUP BY certificado_medico.id) AS cantidad_inasistencias
ON cantidad_inasistencias.id_certificado_medico = certificado_medico.id
WHERE dias_reposo > cant_inas.cantidad
ORDER BY certificado_medico.fecha_inicio_vigencia ASC
Un saludo.