1

我有两个 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

关于查询应该是什么的任何建议或指导?

4

2 回答 2

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')

我猜是这样的。

于 2012-07-09T06:56:34.937 回答
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

您可以在此处检查代码的模拟

于 2012-07-09T06:49:15.350 回答