0

我有一个items表:itemID,itemName每一个item都可以预定一段​​时间;每个项目可以有多个预订;预订从不重叠。

预订保存在预订表中:itemID、startDate、endDate

我想指定天数、开始日期和结束日期,然后在提供的开始日期和结束日期之间查找任何未预订期间为该天数或更短的项目。换句话说,我正在寻找给定日期范围内的“短期可用性”项目。然后,我想返回每个 itemID 的短期可用性开始和结束日期的列表。

我将不胜感激有关如何解决此问题的任何建议,理想情况下是在单个 MySQL 查询中,但使用 PHP 循环进行长期操作是可以的。

到目前为止,我的方法是获取 bookings 表中的所有唯一 itemID,其中包含在提供的开始日期和结束日期之内或之间的预订,然后使用 PHP 和 MySQL 查询的组合解析整个范围,并添加 itemID 和将“短期期间”的开始和结束日期添加到数组中,但这不是一种优雅的方法。

谢谢

4

2 回答 2

0

那么这一切都取决于你的日期是如何安排的。如果它们的格式为 DD/MM/YYYY,其中值只是一个 int 03221990,您可以尝试使用简单的大于或小于运算符来隔离可用日期,这一切都可以在查询中完成。这样您就可以找到一系列符合您粗略日期描述的项目,但不一定必须完全符合您的开始日期和结束日期。你的日期是如何安排的?

于 2012-08-01T21:03:05.553 回答
0

您的预订表可能如下所示:

ItemID | booked
23 | 2012-08-01
23 | 2012-08-02
23 | 2012-08-03

其中第 23 项预订了 3 天。因此,在预订项目时添加行。

给定每个日期的日期范围 2012-08-03 到 2012-08-05,请选择不在预订表中的项目。我不太确定,但我认为这可以通过“完全外部连接”来实现。

于 2012-08-01T22:14:21.913 回答