2012-07-09 109 views
1

我有兩個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
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') 

類似的東西,我猜。

+0

謝謝,作品100%。感謝你的時間。 – Smudger 2012-07-09 07:44:12

+0

不客氣。感謝你,我學到了另一種解決方案:) – zato 2012-07-09 09:04:38

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

+0

非常感謝,您的更新代碼也在100%工作。任何解決方案更可取,如果你的答案與@zato相比也是可行的? – Smudger 2012-07-09 07:46:34

+0

@Smudger不客氣! Zato的答案和我一樣好。 – alfasin 2012-07-09 07:48:02

+0

乾杯@alfasin。再次感謝。 – Smudger 2012-07-09 07:49:07