Sie wollen so etwas:
select room_id
from availability a
where avail_date between $start and $end
group by room_id
having count(*) = datediff($end, $start) + 1;
Das having
-Klausel zählt die Anzahl der Zeilen während dieses Zeitraums, um zu sehen, ob sie mit der Anzahl der benötigten Tage übereinstimmt. Dies ist "inklusive" Logik, also wenn $start = $end
, dann wird davon ausgegangen, dass Sie das Zimmer an diesem Datum benötigen.