0

我有一个我想查询的站点详细信息列表 - 仅返回数据丢失的那些。我想让我的用户能够查询仅针对选定组的数据库返回信息。

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 和相关括号的组合。我有更多的字段要添加到列表中,所以任何建议都会被采纳

4

1 回答 1

1

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

但是您的查询中还有一个逻辑错误:您的第一个查找条件AND仅与第一个地址空条件相关联,而第二个地址空条件仅由 an 链接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,因此上述内容尚未测试。我希望它有效。

于 2013-07-30T13:22:19.243 回答