2017-04-05 53 views
0

我有一张包含员工和任务的表,并且我想要一份缺失的员工/任务组合列表。MySQL如何选择缺失值

Bob Gardening 
Bob Watering 
Jane Gardening 
Jane Digging 

所以选择会产生

Bob Digging 
Jane Watering 

有什么建议?谢谢

+0

有可能是三张表:雇员,任务和提到的employee_task表,正确吗?这些链接如何?按ID还是字符串(例如'Bob'和'Gardening')? –

+0

它是一张表 - 它是从其他表中创建的汇总表,列出了员工和活动完成的次数。 – user3466409

回答

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 
); 
+0

谢谢 - 这使我在写路径 - 我使用select * from(选择雇员,任务从(选择不同的雇员从表)作为交叉连接(从表中选择不同的任务)作为b)作为c where(c.employee ,c.task)不在(选择员工,表中的任务); – user3466409

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)