我正在尝试构建一个查询,它将查看两个不同表中两个字段中的数据并检查数据是否相同,如果是,我希望它返回匹配的次数,如果不是,我只是想让它返回“没有观看”的文字。
我在我的访问数据库中构建了这个查询,该数据库包含第一个表“Property”中的字段和第二个字段,我希望它将数据与“Viewings”进行比较。我使用构建工具构建了以下表达式,但是当我在尝试运行查询时每次收到此错误消息时,我都坚持使其工作:“您的查询不包括指定的表达式'Property Viewed'作为聚合函数。“
totalViewings: IIf([Viewings]![Property Viewed]=[Property]![ID],Count([Viewings]![Property Viewed]=[Property]![ID]),"No Viewings")
任何帮助如何克服这个错误都将非常感激。
由于
答案 0 :(得分:0)
我建议做这样的事情:
1)假设这是您自己开发的内容,请确保您的数据结构首先完整。因为我不喜欢相对代码恶意的标识符,所以我有这样的表 -
属性 - PropertyID
(自动编号,主键),HouseNumberOrName
,Street
等
查看 - 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;