MS Access Query使用IF来比较值

时间:2013-12-20 20:54:35

标签: ms-access if-statement aggregate-functions

我正在尝试构建一个查询,它将查看两个不同表中两个字段中的数据并检查数据是否相同,如果是,我希望它返回匹配的次数,如果不是,我只是想让它返回“没有观看”的文字。

我在我的访问数据库中构建了这个查询,该数据库包含第一个表“Property”中的字段和第二个字段,我希望它将数据与“Viewings”进行比较。我使用构建工具构建了以下表达式,但是当我在尝试运行查询时每次收到此错误消息时,我都坚持使其工作:“您的查询不包括指定的表达式'Property Viewed'作为聚合函数。“

totalViewings: IIf([Viewings]![Property Viewed]=[Property]![ID],Count([Viewings]![Property Viewed]=[Property]![ID]),"No Viewings")

任何帮助如何克服这个错误都将非常感激。

由于

1 个答案:

答案 0 :(得分:0)

我建议做这样的事情:

1)假设这是您自己开发的内容,请确保您的数据结构首先完整。因为我不喜欢相对代码恶意的标识符,所以我有这样的表 -

属性 - PropertyID(自动编号,主键),HouseNumberOrNameStreet

查看 - ViewingID(自动编号,主键),PropertyID(数字/长整数),ViewingDate

在“关系”视图中,Properties.PropertyID将设置为以一对多关系指向Viewings.PropertyID

2)你的实际查询我会分成两个,第一个编译数据,第二个格式化显示。第一个会像这样,保存为ViewingCounts ...

SELECT Properties.PropertyID, Count(Viewings.PropertyID) As ViewingCount
FROM Properties LEFT JOIN Viewings ON Properties.PropertyID = Viewings.PropertyID
GROUP BY Properties.PropertyID;

...第二个像这样,保存为ViewingCountsForDisplay

SELECT Properties.*, IIf(ViewingCount = 0, 'No viewings', ViewingCount) AS Viewings
FROM Properties INNER JOIN ViewingCounts ON Properties.PropertyID = ViewingCounts.PropertyID
ORDER BY Properties.PropertyID;