繁体   English   中英

如果在一行中满足条件,如何从查询中排除多个结果

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM