Microsoft Access SQL查询意外匹配名称

时间:2010-10-13 23:54:04

标签: ms-access

我尝试使用Access进行查询,它会返回非常意外的结果(它会返回来自contacts表的记录,这些记录甚至不会出现在temp_query中:

 SELECT contacts.names_1, contacts.names_2, contacts.addresses, contacts.cities, contacts.us_states_and_canada, contacts.zip_codes
 FROM contacts, temp_query
 WHERE 
   (((temp_query.first_name) Like "*" & [contacts].[names_1] & "*") 
       AND ((temp_query.last_name) Like "*" & [contacts].[names_1] & "*")) 
  OR 
   (((temp_query.first_name) Like "*" & [contacts].[names_2] & "*") 
       AND ((temp_query.last_name) Like "*" & [contacts].[names_2] & "*"));

我认为上述内容是有意义的,因为temp_query的first_name和last_name中的字符串可以位于联系人的name_1中,而temp_query的first_name和last_name可以位于联系人的name_2中。但我不认为first_name可以在name_1中,last_name在name_2中,反之亦然。

有人推荐了这个,但最终只返回了一条记录,它应该至少返回70(更不用说查询花了35分钟才能得到结果):

Criteria: (in first_name column): Like "*" & [contacts].[name1] & "*"  (in last_name column) like "*" & [[contacts].[name2] & "*"
Or:       (in first_name column): Like "*" & [contacts].[name2] & "*"  (in last_name column) Like "*" & [[contacts].[name1]  & "*"

所以我不确定什么应该是预期效果的正确标准。

2 个答案:

答案 0 :(得分:2)

你知道SQL吗?在SQL视图中打开查询并在那里编辑它可能会更好。

然后,当您返回到设计视图时,设计视图中的字段将自动反映您在SQL视图中放置的内容,以查看您缺少的内容。

答案 1 :(得分:1)

我认为这就是你要找的东西。您可以将其粘贴到SQL视图

SELECT contacts.names_1, contacts.names_2, contacts.addresses, contacts.cities, contacts.us_states_and_canada, contacts.zip_codes
FROM contacts, temp_query
WHERE 
(
contacts.names_1  Like "*" & temp_query.first_name    & "*" 
and 
contacts.names_1  Like "*" & temp_query.last_name    & "*" 

)
OR
(
contacts.names_2  Like "*" & temp_query.first_name    & "*" 
and 
contacts.names_2  Like "*" & temp_query.last_name    & "*" 
)
;

当contacts.name_1位于first_name和last_name中或者contacts.name_2位于first_name和last_name中时,您的原始where子句正在查找。