Sql Access 2010参数查询-和或

Sql Access 2010参数查询-和或,sql,ms-access-2010,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.

我有一个我想查询的站点详细信息列表——只返回那些缺少数据的站点。我想让我的用户能够查询数据库,只返回选定组的信息

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));    

但是,这不会从所选站点返回数据,而是从所有站点返回数据。我认为这是和或相关括号的组合。我还有很多字段要添加到列表中,因此任何建议都会受到重视

不幸的是,MS Access的括号非常宽泛。即使您不放置它们,MS Access也会将它们放入—无论逻辑上是否需要它们

但您的查询中还有一个逻辑错误: 您的第一个查找条件仅与
链接到第一个地址空条件,而第二个地址空条件仅与
链接,这导致空地址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,因此上述功能尚未测试。我希望它能起作用