Chcesz coś takiego:
select room_id
from availability a
where avail_date between $start and $end
group by room_id
having count(*) = datediff($end, $start) + 1;
having
klauzula zlicza liczbę wierszy w tym okresie, aby sprawdzić, czy odpowiada liczbie potrzebnych dni. Jest to logika "włączna", więc jeśli $start = $end
, to zakłada, że potrzebujesz pokoju w tym dniu.