1

2 つの MySQL クエリがあります。

1つ目は、人が行ったトレーニングを示しています。2 つ目は、仕事に必要なトレーニングを示しています。

最初のクエリ

select training from coursescompleted where person='$person'

2 番目のクエリ

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

例として、最初のクエリ (トレーニング完了) の出力は次のとおりです。

first aid course
Firesystems course

2 番目のクエリの出力 (トレーニングが必要) は次のとおりです。

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 に答える