Ver Mensaje Individual
  #11 (permalink)  
Antiguo 14/12/2012, 06:25
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años, 2 meses
Puntos: 2658
Respuesta: Consulta que haga....

NOT EXISTS se usa para relacionar algo en la tabla de la consulta base respecto de algo en la subconsulta, y eso no lo estás haciendo. Esencialmente son consultas independientes.
Lo que hay que hacer es hacer un LEFT JOIN que te devuelva todo lo de la primera tabla que no esté vinculado a la segunda, por ejemplo.
Supongamos que en la tabla GRUPO hay un campo que vincule al grupo con el empelado monitor, por medio de la PK de empelado, y que la FK en la tabla grupo se llame monitor.
La consulta para que te devuelva lo que buscas sería mas o menos:
Código MySQL:
Ver original
  1. SELECT E.*
  2. FROM empleado E LEFT JOIN grupo G ON E.empleado_id = G.monitor
  3.           (E.emplado_id = 20
  4.           AND G.dias IN('Lunes', 'Miercoles')
  5.           AND (TIME('12:00:00') BETWEEN G.inicio AND G.fin)
  6.                  OR
  7.                  (TIME('12:30:00') BETWEEN G.inicio AND G.fin)))
  8.           OR
  9.           (E.emplado_id = 20
  10.           AND G.dias IS NULL);

Probemos con esto y veamos.

La idea es que devuelva ese empleado, si es monitor de un grupo en un horario determinado, o bien si no tiene grupos asignados.

Lo que noto es que estás poniendo valores múltiples en la búsqueda para el campo "dias", y eso es incorrecto en cualquier caso: Si el SET tiene definidas claves multivalor, es un error gravísimo de diseño, y si no las tiene, jamás encontrará dos claves al mismo tiempo, porque el campo sólo puede tener asignado el valor de una sola a la vez.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)