Để tìm kiếm tất cả các phòng không có người đặt trong một khung thời gian nhất định, hãy xem xét những điều sau:
SELECT roomID FROM room WHERE roomID NOT IN(
SELECT roomID FROM reservation WHERE startDate < @EndDate AND endDate > @StartDate
)
Điều gì đang xảy ra ở đó?
Trong truy vấn bên trong, tôi đang tìm kiếm danh sách đặt phòng cho các đặt phòng ít nhất một phần trong khung thời gian yêu cầu và lấy ID phòng của họ. Và sau đó, trong truy vấn bên ngoài, tôi yêu cầu từ bảng phòng tất cả các ID phòng KHÔNG được liệt kê, nghĩa là họ không có đặt phòng nào ít nhất là một phần trong khung thời gian yêu cầu.
@StartDate và @EndDate sẽ phải được bạn sửa đổi - bạn phải đặt các biến của mình ở đó.