mysql查询显示不匹配的内容

时间:2012-07-09 06:39:24

标签: mysql

我有两个MySQL查询。

第一个显示了一个人做过的培训。第二部分显示了工作需要的培训。

首次查询

select training from coursescompleted where person='$person'

第二次查询

select j.job, r.training from riskstraining r join jobsrisks j on j.risk=r.Risk

例如,第一个查询(训练完成)的输出是:

first aid course
Firesystems course

第二个查询(需要培训)的输出是:

Security Guard   -   Firesystems Course
Crane Operator   -   Driving LicenseCourse
Crane Operator   -   first aid course

如何组合这些查询以显示完成工作所需的课程?根据下面的例子,如果我选择了工作“起重机操作员”,结果应该是“驾驶执照课程”,因为该人已经完成了“急救课程”。联接将显示匹配的结果,而不是它们不匹配的位置。

期望的输出 - 选择“起重机操作员”

crane operator   -   driving license course

有关查询应该是什么建议或指导?

2 个答案:

答案 0 :(得分:2)

select j.job, r.training from riskstraining r join jobsrisks j on j.risk=r.Risk
where r.training not in 
(select training from coursescompleted where person='$person')

我猜是这样的。

答案 1 :(得分:1)

以下将解决这个问题:

select j.job, r.training 
from riskstraining r join jobsrisks j on j.risk=r.Risk
left join 
(select training from coursescompleted  where person='$person') cc 
on r.training = cc.training 
WHERE cc.training IS NULL

您可以检查代码here

的模拟