我尝试为 iPhone 创建一个应用程序,您可以在其中设置约会。一切都保存到 MySQL 数据库中,我目前通过 JSON 将数据获取到我的应用程序中。这是一个工作流程:
- User1 定义他工作的时间。例如上午 8 点至下午 4 点。
- 用户 2 想与用户 1 约会,例如上午 8 点到上午 9 点。
该脚本应该能够做到这一点:
- 约会在用户的工作时间内;和
- 它不会与现有任命发生冲突,这可能以三种可能的方式发生:
- 冲突预约在新预约期间开始;和/或
- 冲突预约在新预约期间结束;或者
- 冲突约会在新约会之前开始,在新约会之后结束。
这些是重要的表格:
// new row should be added here when the conditions above are met
create table ios_appointment (
appointmentid int not null auto_increment,
start timestamp,
end timestamp,
user_id_fk int
)
// a working hour has a n:1 relationshipt to ios_worker
create table ios_workinghours (
workinghoursid int not null auto_increment,
start timestamp,
end timestamp,
worker_id_fk int
)
// employee, has a 1:n relationship to ios_workinghours
create table ios_worker (
workerid int not null auto_increment,
prename varchar(255),
lastname varchar(255),
...
)
select 子句的输入是两个时间戳,start
和end
。这些由用户定义。因此脚本应该检查用户 2 是否在该特定时间工作以及是否已经有约会。
我目前有这样的东西,但它使用 user_id 来链接表:
SELECT EXISTS (
SELECT *
FROM ios_appointments a JOIN ios_workhours h USING (user_id)
WHERE user_id = 1
AND h.start <= '08:00:00' AND h.end >= '09:00:00'
AND (
a.start BETWEEN '08:00:00' AND '09:00:00'
OR a.end BETWEEN '08:00:00' AND '09:00:00'
OR (a.start < '08:00:00' AND a.end > '09:00:00')
)
LIMIT 1
)
感谢您的每一次帮助。谢谢。