我有一个我想查询的网站详细信息列表 - 只返回缺少数据的网站详细信息。我想让我的用户能够查询数据库,仅返回所选组的信息。
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和相关括号的组合。我还有更多字段要添加到列表中,因此任何建议都是适当的
答案 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,因此尚未测试上述内容。我希望它有效。