[英]How do I exclude multiple results from a query if a condition is met in one row
我有 2 张桌子我想加入:
此表显示了所有满足给定任务/技能组合的多个标准的员工,因此是分配给任务的候选人:
任务编号 | 任务开始 | 任务结束 | 技能ID | 员工ID |
---|---|---|---|---|
1 | 2020-01-15 | 2020-01-20 | 38 | 1001 |
1 | 2020-01-15 | 2020-01-20 | 38 | 1002 |
此表显示已分配给员工的任务:
分配id | 员工ID | 任务编号 | 技能编号 | 分配开始 | 分配结束 |
---|---|---|---|---|---|
16285 | 1001 | 4 | 91 | 2020-01-01 | 2020-01-18 |
16286 | 1034 | 2 | 84 | 2020-04-01 | 2020-04-19 |
我试图加入这些表以显示哪些员工可以分配给任务。 业务规则是员工一次只能处理一项任务。
如何查询分配表中可能的日期重叠,然后从显示所有可能分配的结果表中排除该员工?
例如,任务 1,技能 38,员工 1001 可能适合分配(第一个表的用途),但在查询第二个表后,您看到他们的分配日期与任务的日期重叠1.
我想为所有可能的分配生成一个包含 task_id、skill_id 和 employee_id 的表,并且满足没有日期重叠的标准。
注意:完成分配后,查询将需要再次运行以将其与新数据进行比较...
select
task_id, skill_id, employee_id, max(task_end) as data_a
from
employee a
where
data_a > (select min(assign_end) from assigned b
where a.employee_id = b.employee_id group by employee_id) group by employee_id
永远不要在 mysql 中测试它只是执行一个线索
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.