我有两个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
有关查询应该是什么建议或指导?
答案 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
的模拟