使用sql预订冲突

时间:2016-07-21 14:43:51

标签: mysql sql filemaker

需要一些建议。试图建立一个集成到我们其他系统中的预订系统,除了可靠地检测其他预订的冲突外,它们都已完成

我的预订数据库结构非常简单如下

fk_ResourceID, StartDate, EndDate, z_TimeStart, z_TimeEnd

我有一个查询来获取数据并检索在日期范围内预订的资源。这非常有效。我现在需要添加另一个过滤器来检查时间。

SELECT

   fk_ResourceID, 
   z_TimeStart, 
   z_TimeEnd,
   StartDate,
   EndDate

FROM Resources 

WHERE fk_ResourceID = 'Drama Room' 

AND 
(
    (StartDate <= ? AND EndDate >= ?) OR
    (StartDate <= ? AND EndDate >= ?) OR
    (StartDate >= ? AND EndDate <= ?)
)

ORDER BY fk_ResourceID ASC

我无法弄清楚如何包含时间检查,所以我所做的是循环查询中的每条记录并检查此标准

If(
    (z_TimeStart >= new_booking_start_time  and z_TimeStart <= new_booking_end_time) 
or
    (new_booking_start_time  >= z_TimeStart and new_booking_start_time <= z_TimeEnd); 

True )

我认为它有效,但遗憾的是我遇到了失败的情况。我的数据如下。

Returned Data From SQL Query: 'Drama Room','08:55','23:55','07/22/2016','07/28/2016'
Data Input in my form to check: 'Drama Room','08:05','08:35','07/24/2016','07/24/2016'

在我开始在循环中破解条件语句以检查日期和时间之前,是否有一种相当简单的方法在原始sql查询中实现时间搜索?我使用FileMaker sql和scripts命令的组合来尝试解决这个问题。的?是FM SQL中的查询参数。

1 个答案:

答案 0 :(得分:0)

这是获得冲突的正确逻辑

std::optional<>