2011-11-17 126 views
0

我面臨Access數據庫中的內部連接問題。我有兩張桌子,每張桌子都有兩列。兩個表中一個是MID,另一個是DOB。第一個表的名字是可維護的,而其他的是第五個。我想檢索所有那些在under5表中匹配它的記錄,因此我使用Inner join。問題是有一個MID 10106,其在under5表中的頻率是2並且在維護中是5,但是在運行查詢之後,返回的MID(10106)的數量是10(我猜想預期行爲應該是2),這實際上是荒謬的。請幫我解決這個問題。 這是我的查詢:MS Access 2007中的內部連接

SELECT maintable.MID, maintable.DOB, Under5.MID, Under5.DOB 
FROM under5 
INNER JOIN maintable ON under5.MID=maintable.MID; 

回答

1

的行爲是abosolutely罰款。

主表中的每一行都將與內部表中的每行相匹配。由於有5行主表和在內部表的兩行5 * 2 = 10行

Can there be any other way so that i could only retrieve those MID and DOB 
that is present in under5 table after matching it with maintable. 

嘗試這種

SELECT distinct Under5.MID, Under5.DOB 
FROM under5, MainTable 
where under5.mid = mainTable.mid 
+0

還能有任何其他方式,這樣我可以只檢索那些MID和出生日期是與maintable匹配它之後,存在於under5表。 – user510686

+0

有沒有其他方法可以讓我只能在將它與維護對象匹配後才能檢索出現在under5表中的MID和DOB。 – user510686

+0

我嘗試了不同的子句,但以相同的問題結束。不知道爲什麼訪問行爲是這樣的 – user510686

0

您正在描述semijoin例如嘗試:

SELECT Under5.MID, Under5.DOB 
    FROM under5 
WHERE EXISTS (
       SELECT * 
       FROM maintable 
       WHERE maintable.MID = under5.MID 
      );