MySql

Batallando un poco con mysql las consultas son algo complicadas weno las que tengo que hacer pero ai la llevo miren aqui les dejo una que saca un empleado que no ha sido registrado en las reservaciones en tal fecha y hora y en sus horas de trabajo claro que si no esta trabajando poes no se debe de mostrar a demas de tener un servicio que realizar y si el lo realiza se muestra siempre y cuando no este ocupado en esa hora jejeje miren D:

SELECT DISTINCT E. id, E.name
FROM empleados AS E, roles_servicios AS RS, reservaciones as r,servicios as S
WHERE E.rol_id = RS.role_id
AND RS.servicio_id = S.id
AND RS.servicio_id = 9
AND r.fecha = DATE(«2008-07-22»)
AND r.hora between SUBTIME(TIME(«13:46»),TIME(«0:50»)) AND ADDTIME(TIME(«13:46»),TIME(«0:50»))
AND E.sucursal_id= 2
AND (TIME(«13:46») Between E.horaEntrada And E.horaSalida)
AND E.id NOT IN (
SELECT DISTINCT E. id
FROM empleados AS E, roles_servicios AS RS, reservaciones as r,servicios as S
WHERE E.rol_id = RS .role_id
AND RS.servicio_id = S.id
AND RS.servicio_id=9
AND r.fecha = DATE(«2008-07-22»)
AND r.hora between SUBTIME(TIME(«0:46»),TIME(«8:50»)) AND ADDTIME(TIME(«22:46»),TIME(«0:50»))
AND E.sucursal_id= 2
AND (TIME(«13:46») Between E.horaEntrada And E.horaSalida)
AND E.id IN (
SELECT ER.empleado_id
FROM empleados_reservaciones as ER
WHERE r.id=ER.reservacione_id
)
)

waaa
tablas
reservaciones tienen muchos empleados
empleados tiene un rol y muchas reservaciones
roles tiene muchos empleados
empleados reservaciones intermedia para hacer el muchos a muchos entre empleados y reservaciones jejej

pero ia me salio ahora namas falta agregarle la duracion del servicio y que no se intercepte con otro que ya esta reservado y sera genial ^^

Leave a Reply

Your email address will not be published. Required fields are marked *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.