我一直致力于员工工作管理项目,我有点陷入困境。我有3张桌子:
1: employees empid, empFirst empLast 1 jon smith 2 mark road 3 jane hall
2: holiday id employee id datestart dateend 1 2 2015-08-07 2015-08-12 2 3 2015-07-4 2015-07-11 3 2 2015-07-20 2015-07-24
3: Task Assigned id taskid assignedTo(userid) startTask endTask 1 1 1 2015-07-10 2015-07-14 2 2 2 2015-07-29 2015-07-29 3 2 3 2015-07-18 2015-07-30 4 3 2 2015-08-30 2015-09-03 5 4 2 2015-09-10 2015-09-03
我不确定如何查询表以查看谁可用于日期范围内的任务(多个用户分配到同一任务)。我有一个查询,我会在这里:
所以,如果你把假期表拿出来,如果是等式,只需运行下面的查询
SELECT employees.empId, employees.empFirst, employees.empLast
FROM employees
LEFT JOIN taskassigned
ON employees.empId = taskassigned.assignedTo
WHERE taskassigned.assignedTo IS NULL or
not (taskassigned.startTask BETWEEN '2015-07-29 14:30:00' AND '2015-07-29 18:30:00'
or taskassigned.endTask BETWEEN '2015-07-29 14:30:00' AND '2015-07-29 18:30:00')
我得到的结果是:
empId empFirst empLast 1 jon smith (he is available) 2 mark road 2 mark road
如您所见,Mark在此日期(在任务表中)不可用。
我想首先查询假期表以查看他们是否正在休假,然后在任务表中查看他们是否已经在日期范围内有任务,然后结果向我展示该任务的可用性。
答案 0 :(得分:0)
我现在无法测试,但请尝试:
beforeCommandExec
这将检查指定的开始日期是否不在指定任务的开始日期或结束日期之间,以及指定的结束日期是否落在指定任务的开始日期或结束日期之间,然后执行相同操作假期。
答案 1 :(得分:0)
您好,我现在没有正确的测试工具,但您可以尝试这样做:
使用日期比较时:
尝试转换/转换为DATE(确保不包含时间)以确保结果正确。
据我所知,在开始和结束日期之间使用时也包括在内(可能在某些RDMS功能中)
另外,对于包括假期,你能做的就是这样(或者):
或
很抱歉没有包含任何代码,因为我没有时间设置。