2013-01-17 100 views
1

我有一個查詢,如下所示:選擇哪裏都不在子查詢訪問2010

SELECT * 
FROM servTable, serialTable 
WHERE servTable.[Service Tag]=serialTable.[Serial Number]; 

這個查詢,假設我沒有犯任何錯誤,應該把所有的信息來自兩個表的地方串行和服務列匹配。

我還需要從每張表中找不到匹配的所有信息。我試着用下面的查詢來做這件事,但他們似乎沒有工作。

SELECT * 
FROM serialTable WHERE serialTable.[Serial Number] <> (SELECT * 
FROM servTable, serialTable 
WHERE servTable.[Service Tag]=serialTable.[Serial Number]); 

SELECT * 
FROM servTable WHERE servTable.[Service Tag] <> (SELECT * 
FROM servTable, serialTable 
WHERE servTable.[Service Tag]=serialTable.[Serial Number]); 

感謝。

+1

我想你想了解SQL連接。 – dnLL

+0

我試過使用連接,但左右連接都沒有給我想要的結果。我嘗試了一個左聯盟,但也失敗了。訪問不允許自然連接,我認爲這更接近我正在尋找的。 – spassen

+1

最終接受的答案是利用連接。 – dnLL

回答

3

1匹配

SELECT * 
FROM servTable 
INNER JOIN serialTable 
ON servTable.[Service Tag]=serialTable.[Serial Number]; 

2不匹配,只有一邊

SELECT * 
FROM servTable 
LEFT JOIN serialTable 
ON servTable.[Service Tag]=serialTable.[Serial Number] 
WHERE serialTable.[Serial Number] Is Null 

有找到匹配和查找在MS Access無與倫比的查詢嚮導。

+0

我討厭我必須查看它的工作。 如果訪問只是使用NOT IN(代碼)一切都會好得多。 – RazorSky