Vuoi qualcosa del genere:
select room_id
from availability a
where avail_date between $start and $end
group by room_id
having count(*) = datediff($end, $start) + 1;
Il having
La clausola sta contando il numero di righe durante quel periodo per vedere se corrisponde al numero di giorni necessari. Questa è una logica "inclusiva", quindi se $start = $end
, quindi presume che tu abbia bisogno della stanza in quella data.