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:
Si quieres saber si están cruzados (inician o terminan fuera del rango), la cosa sería diferente:
Código MySQL:
Ver original ((Fechainicio
< '2010-06-13' AND (Fechafin
BETWEEN '2010-06-13' AND '2010-11-10')) ((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.