我在预订系统中找到免费房间有点问题
我找到了一些解决方案,但它们似乎不起作用。
我的桌子:
create table room
(
roomID int not null,
maxPeople numeric(2,0) not null,
beds numeric(2,0) not null,
primary key (roomID)
);
(
reservationID int not null,
clientID int,
roomID int,
startDate date not null,
endDate date not null,
primary key (reservationID)
);
我试过这样的方法,但那就是计算所有房间,完全忽略免费房间。
SELECT Id_pokoju
from rezerwacje
WHERE
(
(SELECT COUNT(ID_pokoju)
from rezerwacje
WHERE "2015-03-10" > Data_konca OR "2015-03-20" < Data_konca)
=
(SELECT COUNT(ID_pokoju)
from rezerwacje
GROUP BY Id_pokoju)
);
要搜索在特定时间段内没有预订的所有房间,请考虑以下内容:
SELECT roomID FROM room WHERE roomID NOT IN(
SELECT roomID FROM reservation WHERE startDate < @EndDate AND endDate > @StartDate
)
那里发生了什么?
在内部查询中,我在预订列表中搜索至少部分在所需时间范围内的预订,并获取他们的房间ID。然后,在外部查询中,我从房间表中请求所有未列出的房间ID,也就是说,他们没有至少部分在所需时间范围内的预订。
@StartDate和@EndDate必须由您修改——您必须将变量放在那里。