SQL:在约会中查找每分钟不可用的资源
我有一张有开始和结束日期时间的约会表。根据约会的开始和结束时间,每个约会在不同的时间使用不同的机器。一天内可以有许多预约,许多机器都在使用中。如果有足够的机器可用,约会可能会相互重叠。最终用户在(1)开始时间,(2)结束时间,(3)选择时间范围不可用的机器类型之前预定约会(想想outlook上使用ical格式的日历)。我想通过日历向最终用户显示其选择不可用的范围(每分钟精度)。示例:我总共有3个虚拟机,这三个虚拟机都用于约会id=1 用户场景:user1希望在8:00到10:30之间预订机器id为{4,5,10}的约会SQL:在约会中查找每分钟不可用的资源,sql,spring,h2,Sql,Spring,H2,我有一张有开始和结束日期时间的约会表。根据约会的开始和结束时间,每个约会在不同的时间使用不同的机器。一天内可以有许多预约,许多机器都在使用中。如果有足够的机器可用,约会可能会相互重叠。最终用户在(1)开始时间,(2)结束时间,(3)选择时间范围不可用的机器类型之前预定约会(想想outlook上使用ical格式的日历)。我想通过日历向最终用户显示其选择不可用的范围(每分钟精度)。示例:我总共有3个虚拟机,这三个虚拟机都用于约会id=1 用户场景:user1希望在8:00到10:30之间预订机器id
08:00 ----- <-|
08:30 | | | 9 total machines are taken during this timeframe
09:00 |x3 | ----- |
09:30 ----- | | ----- |
10:00 | | | | |
10:30 |x4 | |x2 | <-|
11:00 ----- | |
11:30 -----
机器:
| id | starttime | endtime |
| --- | ------------------- | ------------------- |
| 1 | 2021-05-21 8:00:00 | 2021-05-21 09:30:00 |
| 2 | 2021-05-21 09:00:00 | 2021-05-21 11:00:00 |
| 3 | 2021-05-21 09:30:00 | 2021-05-21 11:30:00 |
| id | machinetypeid | name |
| --- | ----------------| ---- |
| 1 | 4 | pc12 |
| 2 | 4 | pc13 |
| 3 | 4 | pc14 |
| 4 | 3 | vm45 |
| 5 | 3 | vm46 |
| 6 | 3 | vm47 |
| 7 | 1 | gg67 |
| 8 | 1 | gg68 |
| 9 | 1 | gg69 |
| 10 | 1 | gg70 |
预约机器(交叉表)
精度:在后端使用H2 SQL和Spring
| id | machinetypeid | name |
| --- | ----------------| ---- |
| 1 | 4 | pc12 |
| 2 | 4 | pc13 |
| 3 | 4 | pc14 |
| 4 | 3 | vm45 |
| 5 | 3 | vm46 |
| 6 | 3 | vm47 |
| 7 | 1 | gg67 |
| 8 | 1 | gg68 |
| 9 | 1 | gg69 |
| 10 | 1 | gg70 |
| id | appointmentid | machineid |
| --- | --------------| ----------- |
| 1 | 1 | 3 |
| 2 | 1 | 4 |
| 3 | 1 | 5 |
| 4 | 2 | 1 |
| 5 | 2 | 2 |
| 6 | 2 | 3 |
| 7 | 2 | 7 |
| 8 | 3 | 4 |
| 9 | 3 | 5 |