2015-02-11 106 views
0

我知道存在類似的問題How to select all records from one table that do not exist in another table?但我有一個不同的場景如何從一個表中選擇用戶尚未選擇的所有記錄?

我有一個TotalTrainings是包括所有記錄

TraningCode | TraningName 
1     A 
2     B 
3     C 
4     D 
5     E 

和另一臺現在SelectedTraining

TraningCode | TraningName | EmpCode | AppraisalID 
1     A   7190  12 
2     B   7190  12 
3     C   8132  10 
4     D   5555  08 
5     E   8132  10 

我有檢索TotalTrainings的所有記錄(培訓)EmpCode = 7190沒有選擇appraisalId 12

TotalTraining別名ttSelectedTrainingst

我已經做了書面質疑這樣的:

select tt.trainingCode from TotalTraining tt left join SelectedTraining st 
on tt.trainingCode = st.trainingCode where st.trainingCode is null 
and EmpCode=7190 and appraisalId =12 

但它沒有給出結果。

我可以達到同樣的用NOT IN,它是完美的工作

select tt.trainingCode from TotalTraining tt where tt.trainingCode not in 
(
select st.trainingCode from SelectedTraining st where 
EmpCode=7190 and appraisalId =12 
) 

我想實現與Joins,誰能告訴我在哪裏,我可能是錯的。

注意:這裏請忽略錯別字,如區分大小寫AppraisalIdappraisalId,因爲這是沒有問題的

預計產量爲

3 
4 
5 

,因爲到現在爲止沒有被選擇,這些訓練通過EmpCode 7190

回答

2

對於你的第一個查詢,你需要推動大部分的公司on子句的條款 - 第二個表的所有條件:

select tt.trainingCode 
from TotalTraining tt left join 
    SelectedTraining st 
    on tt.trainingCode = st.trainingCode and 
     st.EmpCode = 7190 and 
     st.appraisalId = 12 
where st.trainingCode is null ; 
相關問題