【发布时间】:2015-07-14 08:00:04
【问题描述】:
我一直在从事员工工作管理项目,但我有点卡住了。我有 3 张桌子:
1:员工 empid, empFirst empLast 1 乔恩·史密斯 2 标记路 3简大厅 2:假期 id 员工 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:分配的任务 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 乔恩史密斯(他有空) 2 标记路 2 标记路如您所见,Mark 在此日期不可用(在任务表中)。
我想先查询假期表,看看他们是否在度假,然后查询任务表,看看他们是否已经在日期范围内有任务,然后结果告诉我该任务是如何可用的。
【问题讨论】:
-
太累了,无法获得完整的答案,但是,尝试换一种方式思考。您正在尝试查看该员工是否在
2015-07-29 14:30:00和2015-07-29 18:30:00之间有空,因此,在您的WHERE子句中,查看2015-07-29 14:30:00是否不在taskassigned.startTask和taskassigned.endTask之间,以及是否2015-07-29 18:30:00不在taskassigned.startTask和taskassigned.endTask之间。
标签: mysql date date-range