在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