我正在使用MS Access 2010並苦苦尋找以下查詢。假設我有兩張表,tblWeeklyData和tblMainData,它們都包含有關學生及其班級的信息。每個表中的記錄通過公共密鑰fldStudentNumber進行鏈接。假設這兩個表還包含字段fldClass,其中包含學生正在使用的班級的名稱。MS Acces加入查詢與WHERE條件
tblWeeklyData保存新的學生信息,並與tblMainData進行比較,以僅識別正在學習新課程的現有學生。
我要查詢兩個表,以確定學生tblWeeklyData已經在tblMainData(上StudentNumber匹配),並且存在正在研究一個新的類,即有針對特定學生tblWeeklyData.fldClass和tblMainData.fldClass之間不匹配。 。
[編輯]內tblWeeklyData新來的學生沒有在tblMainData匹配StudentNumber不應由該查詢返回[/編輯]
我使用的SQL是:
SELECT [tblWeeklyData].fldStudentNumber, [tblWeeklyData].fldClass
FROM tblWeeklyData INNER JOIN tblMainData ON
([tblWeeklyData].fldStudentNumber = tblMainData.fldStudentNumber)
WHERE ((([tblWeeklyData].fldClass)<>[tblMainData].[fldClass]));
如果tblWeeklyData包含行
fldStudentNumber fldClass
A0001 Chemistry
和tblMainData包含
fldStudentNumber fldClass
A0001 Art
A0001 Biology
上述查詢正確地從tblWeeklyData現有的學生A0001返回研究新類化學:
fldStudentNumber fldClass
A0001 Chemistry
但是,此查詢不與下面的數據工作:
tblWeeklyData
-------------
fldStudentNumber fldClass
A0001 Chemistry
A0001 Dentistry
blMainData
----------
fldStudentNumber fldClass
A0001 Art
A0001 Biology
A0001 Chemistry
我想查詢僅從tblWeeklyData返回「A0001牙科」,因爲牙科是現有學生A0001正在學習的唯一的「新」類。然而,該查詢返回:
fldStudentNumber fldClass
A0001 Chemistry
A0001 Dentistry
我不想排「A0001化學」被返回化學是不是學生A0001一個新的類,它已經在tblMainData存在。
[編輯]爲了證明不應該返回新同學,假設有
tblWeeklyData
-------------
fldStudentNumber fldClass
A0001 Chemistry
A0001 Dentistry
A0002 Zoology
blMainData
----------
fldStudentNumber fldClass
A0001 Art
A0001 Biology
A0001 Chemistry
在這裏,學生A002不應該,因爲它不存在tblMainData返回兩個表。這可能嗎?
[/編輯]
我曾嘗試沒有成功上述查詢的許多變型。在最後一個例子中,我可以看到WHERE子句的計算結果爲「化學<>藝術」或「化學<>生物學」,因此我需要一個不同的WHERE條件來查看給定學生正在研究的每個「班級」如果一個類是新的,我已經看過SQL EXISTS IN和子查詢,但我還沒有能夠解決它。
在這個問題上的任何幫助將衷心感謝,
問候
羅比
謝謝阿爾貝託 - 您所提供的解決方案完美地工作,但是,我看到我的問題的初步框架過於簡化,並沒有指出應返回唯一存在兩個表中的學生。例如,如果在tblWeeklyData中存在一個新學生,該新學生在tblMainData中沒有匹配的StudentNumber,則不應返回。我會去我的第一篇文章,並編輯它來進一步解釋我的意思, – RobbieThompson73