Intanto personalmente preferisco usare il timestamp invece del date. Lo riesco a gestire meglio. Poi per la query potrebbe essere così:

codice:
SELECT COUNT(d.id) FROM Date AS d,Stanze AS s,Persone AS p WHERE d.dal=$dal AND d.al=$al AND s.stanze>=$stanze AND p.persone>=$persone
Poi vedi se non è =0 vuol dire che è disponibile