Access 2010参数查询 - AND OR

时间:2013-07-30 13:10:06

标签: sql ms-access-2010

我有一个我想查询的网站详细信息列表 - 只返回缺少数据的网站详细信息。我想让我的用户能够查询数据库,仅返回所选组的信息。

SELECT 
Lookup.Lookup_Name, 
Contacts.Address1, 
Contacts.Address2
FROM 
Contacts INNER JOIN Lookup ON Contacts.Group_1 = Lookup.Lookup_Code
WHERE (((Lookup.Lookup_Name)=[Site]) AND ((Contacts.Address1) Is Null)) OR (((Contacts.Address2) Is Null));    

但是,这不会从所选站点返回数据,而是返回所有内容。我认为这是AND Or和相关括号的组合。我还有更多字段要添加到列表中,因此任何建议都是适当的

1 个答案:

答案 0 :(得分:1)

不幸的是,MS-Access的括号非常慷慨。即使您没有放置它们,MS-Access也会将它们放入 - 无论它们是否符合逻辑需要。

但是您的查询中还存在一个逻辑错误: 您的第一个查找条件仅与AND链接到第一个地址空条件,第二个地址空条件仅由OR链接,导致空地址2字段的结果显示在所有行(所有网站)中。

请尝试以下版本:

SELECT 
Lookup.Lookup_Name, 
Contacts.Address1, 
Contacts.Address2,
Contacts.further1,
Contacts.further2,
Contacts.further3   -- and so on ...
FROM 
Contacts INNER JOIN Lookup ON Contacts.Group_1 = Lookup.Lookup_Code
WHERE ((Lookup.Lookup_Name)=[Site]) 
AND (  ((Contacts.Address1) Is Null) 
    OR ((Contacts.Address2) Is Null)
    OR ((Contacts.further1) Is Null)
    OR ((Contacts.further2) Is Null)
    OR ((Contacts.further3) Is Null)
    );

目前我的计算机上没有安装MS-Access,因此尚未测试上述内容。我希望它有效。