Ver Mensaje Individual
  #7 (permalink)  
Antiguo 16/12/2008, 02:18
jurena
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 8 meses
Puntos: 300
Respuesta: Ayuda con consulta para buscar cual usuario esta disponible en un rango de

Perdona, me confundí. Creo que esta es la más apropiada (no la he probado):
Código sql:
Ver original
  1. SELECT id_usuario, nombre_usuario
  2. FROM usuarios
  3. WHERE id_usuario NOT
  4. IN (
  5.  
  6. SELECT DISTINCT id_usuario
  7. FROM itinerario_tareas
  8. WHERE (
  9. '09:30:00' <= fecha_hora_inicio
  10. AND '11:15:00' >= fecha_hora_inicio
  11. )
  12. OR (
  13. '09:30:00' >= fecha_hora_inicio
  14. AND '09:30:00' <= fecha_hora_fin
  15. )
  16. )

La lógica es:
si la primera hora es menor o igual que la fecha_hora_inicio, la segunda hora debe ser mayor o igual que esa fecha_hora_inicio para ocupar algo del rango; si la primera hora es posterior a la fecha_hora_inicio, esa primera hora debe ser también anterior o igual a la fecha_hora_fin para ocupar algo del rango. Los iguales pueden parecer redundantes, pero no estorban y aseguran todas las situaciones, aunque en ocasiones se encuentre dos veces, es decir por las dos opciones del OR.

Última edición por jurena; 17/12/2008 a las 10:05