“操作必须是可更新的查询”在UPDATE上使用JOIN到GROUP BY查询

时间:2016-01-19 05:25:20

标签: sql ms-access

我正在开展A2课程,我们正在使用访问权来创建数据库管理系统。对于我系统的一部分,我有一个查询,用于计算用户在给定时间段内租用的项目数。现在,我需要更新此值并将其插入users表。

在用户表中,有一个名为“GamesRentedThisMonth”的字段。我做了一个计算这个值的查询。我已经设置了查询的关系,将UserID链接到User表。

UPDATE Users INNER JOIN UserGamesRentedThisMonth ON (Users.ID = UserGamesRentedThisMonth.UserID)
SET Users.GamesRentedThisMonth = UserGamesRentedThisMonth.CountOfOrderID

设计视图:

我甚至试图检查查询:

UPDATE Users INNER JOIN UserGamesRentedThisMonth ON (Users.ID = UserGamesRentedThisMonth.UserID) SET Users.GamesRentedThisMonth = 5;

仍会产生错误。

2 个答案:

答案 0 :(得分:1)

在某些情况下,没有像GavinP在他的回答中描述的那样创建临时表,但Access支持“域聚合函数”,它通常可用于解决该问题。在您的情况下,您可以这样使用create函数:

DLookUp()

答案 1 :(得分:0)

您无法在Access中的更新中使用摘要查询。这是一种痛苦。不幸的是,自JET 4以来就是如此。 "通常"避免这种情况的方法是首先创建一个带有求和值的临时表,然后在连接中使用它到目标更新查询。在你的情况下,就像将UserGamesRentedThisMonth查询生成一个make表查询创建tblTemp并将原始查询更改为

UPDATE Users INNER JOIN tblTemp ON (Users.ID = tblTemp.UserID)
SET Users.GamesRentedThisMonth = tblTemp.CountOfOrderID

希望有所帮助。