特定の時間枠内に予約がないすべての部屋を検索するには、次のことを考慮してください。
SELECT roomID FROM room WHERE roomID NOT IN(
SELECT roomID FROM reservation WHERE startDate < @EndDate AND endDate > @StartDate
)
そこで何が起こっているのですか?
内部クエリでは、予約リストで、少なくとも部分的に必要な時間枠内にある予約を検索し、それらの部屋IDを取得しています。次に、外部クエリで、リストされていないすべての部屋IDを部屋のテーブルから要求します。つまり、少なくとも部分的に必要な時間枠内にある予約はありません。
@StartDateと@EndDateは、ユーザーが変更する必要があります。変数をそこに配置する必要があります。