Database 检查重叠的汽车预订
我正在为租车(学校作业)编写一个简单的预订程序。我和我的伙伴正在努力使系统比任务要求的更先进一点,但是我们遇到了一些问题,我们希望你能帮助我们解决 我们的想法是,你可以预订某种类型的汽车,当你拿到汽车时,它将是那种类型的汽车(按照我们的任务规定,你不预订特定的汽车,而只预订一种类型的汽车)。只有一位客户可以在特定日期拥有该车。随着预订量的增加,我们必须确保每种类型的汽车出租量不会超过现有数量。预订基本上是以开始日期、结束日期和车辆类型存储的 如果我们现在忽略汽车类型(假设我们只有一种类型),那么预订可能会以图形形式显示如下:Database 检查重叠的汽车预订,database,date,calendar,Database,Date,Calendar,我正在为租车(学校作业)编写一个简单的预订程序。我和我的伙伴正在努力使系统比任务要求的更先进一点,但是我们遇到了一些问题,我们希望你能帮助我们解决 我们的想法是,你可以预订某种类型的汽车,当你拿到汽车时,它将是那种类型的汽车(按照我们的任务规定,你不预订特定的汽车,而只预订一种类型的汽车)。只有一位客户可以在特定日期拥有该车。随着预订量的增加,我们必须确保每种类型的汽车出租量不会超过现有数量。预订基本上是以开始日期、结束日期和车辆类型存储的 如果我们现在忽略汽车类型(假设我们只有一种类型),那么
1/12 2/12 3/12 4/12 5/12 6/12 7/12
|-------------------|
|-----------------|
|-----|
|-------|
|-----------|
|-------------|
如果租车公司只有三辆车,那么可以在2012年3月至2012年5月期间租车,因为所有日子只有两辆车的预订。但是我们怎么知道呢?我们是否必须检查每个日期并计算该日期内的预订数量
如果有人在4月12日预订了一辆车,那么3月12日和5月12日仍然只有2次预订,但4月12日会有3次预订
我们是否有可能通过询问来了解情况,或者我们是否需要逐项检查程序中的每个日期,以检查预订数量是否超过汽车数量? (这是很容易的,只有完整的日期,但考虑的情况下,你可以租每小时的汽车(不仅在每天像这里),那么它可以是一个通过每个我们,如果我们有很多预订和汽车,时间很长……)/P> 希望你有一些好主意能帮助我们。感谢您抽出时间阅读问题:)
- 丹麦米克尔
然而,计算这可能会很困难,还有一个警告:当您查看所有多行插入时,您还应该拆分要插入的其他行(这要求您将所有插入的行记录在临时表中,否则您将无法访问它们).假设您在现实生活中有这样的保留情况:
1/12 2/12 3/12 4/12 5/12 6/12 7/12
Car1: |-------------------|
Car2: |-----------------|
Car3: |-------| |-----------| |-----|
Car4: |-------------|
表car
| id | type | registration |
| 1 | 1 | HH1111 |
| 2 | 1 | HH3333 |
| 3 | 2 | HH77 |
| 4 | 3 | DD999 |
表预订
| car_id | date_from | date_to |
| 1 | 2013-12-01 | 2013-12-04 |
| 2 | 2013-12-04 | 2013-12-07 |
| 3 | 2013-12-01 | 2013-12-02 |
| 3 | 2013-12-03 | 2013-12-05 |
| 3 | 2013-12-06 | 2013-12-07 |
| 4 | 2013-12-01 | 2013-12-03 |
现在,你们必须通过非常简单的逻辑,选择所有可供使用的车辆
从2013-12-05
到2013-12-06
“选择所有没有任何日期预订的车辆,这将阻止其使用”
使用brillian mysql选择:
从不存在的车辆中选择*(从预订中选择*)
其中car.id=reservation.car\u id和
日期<'2013-12-06'和
日期(至>'2013-12-05')
可能的重复比简单地确定两个日期范围是否重叠要复杂得多。