Je wilt zoiets als dit:
select room_id
from availability a
where avail_date between $start and $end
group by room_id
having count(*) = datediff($end, $start) + 1;
De having
clausule is het tellen van het aantal rijen gedurende die periode om te zien of dit overeenkomt met het aantal dagen dat u nodig heeft. Dit is "inclusief" logica, dus als $start = $end
, dan gaat het ervan uit dat je de kamer op die datum nodig hebt.