Tema: Reto de SQL
Ver Mensaje Individual
  #2 (permalink)  
Antiguo 09/03/2010, 06:35
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: Reto de SQL

Te estás complicando la vida...
Lo que dices es que quieres saber es si hay registros cuyas fechas queden comprendidas entre dos valores dados.
Si quieres saber si las fechas están contenidas dentro del rango, sería:
Código MySQL:
Ver original
  1. SELECT  *
  2. FROM Reservas
  3.     ReservaPagada="f" AND
  4.     ((Fechainicio BETWEEN '2010-06-13' AND '2010-11-10')
  5.     AND
  6.     (Fechafin BETWEEN '2010-06-13' AND '2010-11-10'));
Si quieres saber si están cruzados (inician o terminan fuera del rango), la cosa sería diferente:
Código MySQL:
Ver original
  1. SELECT  *
  2. FROM Reservas
  3.     ReservaPagada="f" AND
  4.     ((Fechainicio < '2010-06-13' AND (Fechafin BETWEEN   '2010-06-13'  AND '2010-11-10'))
  5.     OR
  6.     ((Fechafin BETWEEN '2010-06-13' AND '2010-11-10') AND Fechafin > '2010-11-10'));

Tip:
1) Trata de no hacer subconsultas innecesariamente. En ocasiones lo mismo se obtiene afinando mejor los WHERE o definiendo JOINs con mejor eficiencia, y todo eso es mucho más rápido.
2) Presta atención a los paréntesis para graduar las condiciones y establecer cuáles se deben dar al mismo tiempo, y cuales no.
3) Ten cuidado con el formato de fechas. MySQL es muy estricto.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)