在Microsoft Access中,我有一個查詢uniSelectedContacts和table possibles。在MS Access中運行查詢時動態解析
讓我們在候選條件說我有這樣的:
Smith,John
Dough,John B
Ward,Jane Karon
Eggert,Samantha R
在uniSelectedContacts我有這樣的:
Smith,John A 1552 1st Ave
Dough,John 1111 2st Ave
Ward,Jane K 2222 3st Ave
Eggert,Samantha Rachel 3333 1st Ave
我想找到其中的名和姓是可識別的。但是,由於中間初始值的變化,如果沒有可能的中間初始值,那麼我想使用INNER JOIN來解釋uniSelectedContacts中名和姓的所有實例。如果可能的話有一箇中間首字母(名字),不管它的中間首字母或名字是什麼,我想要記錄uniSelectedContacts和可能詞的名字和姓氏彼此相同的記錄,以及中間的第一個字母uniSelectedContacts的首字母(名稱)與可能的中間首字母(名稱)的首字母匹配。所以在上面的例子中,這應該是返回:
Smith,John 1552 1st Ave
Dough,John B 1111 2st Ave
Ward,Jane Karon 2222 3st Ave
Eggert,Samantha R 3333 1st Ave
下面的查詢速度快,我想保留的速度,但 將跳過上述所有記錄(由於中間名首字母(名稱不同) :
SELECT possibles.fullname,
uniSelectedContacts.addresses,
uniSelectedContacts.cities,
uniSelectedContacts.us_states_and_canada,
uniSelectedContacts.zip_codes INTO PrepareForDuplicateCheck
FROM uniSelectedContacts INNER JOIN possibles ON uniSelectedContacts.TheName = possibles.fullname;
爲了嘗試解決上述問題,我有這樣的:
SELECT possibles.fullname,
uniSelectedContacts.addresses,
uniSelectedContacts.cities,
uniSelectedContacts.us_states_and_canada,
uniSelectedContacts.zip_codes,
possibles.[firstname] AS Expr1,
possibles.[lastname] AS Expr2 INTO PrepareForDuplicateCheck
FROM uniSelectedContacts INNER JOIN possibles ON uniSelectedContacts.TheName = possibles.fullname
WHERE (((possibles.firstname)=Left([fullname],InStr([fullname],",")-1))
AND ((possibles.lastname)=Mid([fullname],InStrRev([fullname],",")+1)));
上面給出「輸入參數值possibles.firstname」的消息,但我也沒有確定查詢的底層邏輯是否會傳達我期待的結果。
感謝您的回覆。
感謝響應。 40分鐘後,由於此查詢仍在運行,我不得不強制退出應用程序。有沒有任何可能的方式來做一個不超過5分鐘的條件?例如:如果可能中間首字母不存在 然後從uniSelectedContacts中撕掉所有中間首字母並使用內部聯接以[姓氏]返回所有匹配,[名] 否則爲 如果可能中間首字母存在 然後匹配它agaisnt uniSelectedContacts使用內部連接[姓氏],[名字] [中間首字母]。 – JohnMerlino 2010-11-19 14:43:30
如何運行「make table」來選擇所有「easy」匹配,然後是類似於上面的內容,排除「make table」的內容作爲附加查詢?那會合適嗎? – Fionnuala 2010-11-19 15:30:16
因此,如果總共有100萬條記錄,並且如果簡單匹配返回200條記錄,那麼追加查詢仍然需要運行999,800條記錄? – JohnMerlino 2010-11-19 15:39:12