我有一个包含员工和任务的表,我想要一个缺少员工/任务组合的列表。
Bob Gardening
Bob Watering
Jane Gardening
Jane Digging
所以select会产生
Bob Digging
Jane Watering
有什么建议吗?感谢
答案 0 :(得分:0)
交叉联接可创建员工和任务的所有可能组合。使用NOT IN
,您可以从此集合中减去所有现有员工/工作组合:
select e.employee, t.task
from employees e
cross join task t
where (e.employee, t.task) not in
(
select employee, task
from employees_tasks
);
答案 1 :(得分:0)
您需要将所有员工作为一个子查询,将所有任务作为一个子查询,然后进行交叉连接。完成后,给出如下所示的条件。
Select * from (
select a.employee,b.task from
(Select distinct employee from table) a, (select distinct task from table) b) where (employee,task) not in (select employee, task from table)