Ver Mensaje Individual
  #2 (permalink)  
Antiguo 29/07/2015, 05:51
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
Puntos: 2658
Respuesta: Problema con selects anidados

En realidad no es una consulta tan dificil de pensar, pero es larga de escribir cuando se trata de eventos que ocurren dentro de un rango.
Lo que suelo aconsejar es NUNCA tratar de resolver una consulta de ese tipo de condiciones de un solo saque, solo conseguirás hacer consultas complicadas. Es mejor hacerlo parte a parte y luego integrarlas.

Empecemos así: ¿Qué condiciones debe cumplir un vehiculo para estar disponible en un rago de tiempo determinado?
- No debe estar alquilado en el mismo período.
- No debe haber iniciado su alquiler antes del período y terminar después (tiempos solapados).
- No debe haber iniciado y terminado su alquiler entremedio de las fechas que se buscan (tiempo solapado).
- No debe iniciar o terminar entremedio de las fechas buscadas (tiempos cruzados).

¿Cuatro condiciones? No, realmente, sólo tres grupos:
Código SQL:
Ver original
  1. SELECT `Fk_matricula_auto`
  2. FROM `clienteauto`
  3. WHERE
  4.     fecha_inicio_alquiler NOT BETWEEN '2006-06-05' AND '2006-06-07'
  5.     OR fecha_final_alquiler NOT BETWEEN '2006-06-05' AND '2006-06-07'
  6.     OR NOT (fecha_inicio_alquiler < '2006-06-05' AND  fecha_final_alquiler > '2006-06-07')
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)