MySQL在预订系统中寻找免费房间

时间:2015-03-31 10:39:30

标签: mysql

我在预订系统中找到免费房间有点问题 我找到了一些解决方案,但它们似乎没有用。

我的桌子:

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)
);

1 个答案:

答案 0 :(得分:0)

要搜索在特定时间范围内没有预订的所有房间,请考虑以下事项:

SELECT roomID FROM room WHERE roomID NOT IN(
    SELECT roomID FROM reservation WHERE startDate < @EndDate AND endDate > @StartDate
)

那里发生了什么?

在内部查询中,我在预订列表中搜索至少部分位于所需时间范围内的预订,并获取他们的房间ID。然后,在外部查询中,我从房间表中请求未列出的所有房间ID,也就是说,他们没有至少部分在所需时间范围内的预订。

@StartDate和@EndDate必须由您修改 - 您必须将变量放在那里。