Access Update查询:查询不将指定的表达式作为聚合函数的一部分

时间:2018-10-19 06:58:39

标签: sql ms-access

我正在尝试执行以下操作: 1.将“乘车”表中每个驾驶员的取消计数(IsCancelled =“ Y”)放入“驾驶员”表中,以跟踪每个驾驶员进行了多少次取消。 2.在“驱动程序”表中输入每个驱动程序的平均评分-这是从“乘车”表中针对该特定驱动程序的所有DriverRating平均值得出的。

UPDATE Driver 

INNER JOIN ((Car 
INNER JOIN CarTypeAssignment ON Car.LicensePlateNo = CarTypeAssignment.LicensePlateNo) 
INNER JOIN Ride ON CarTypeAssignment.CarTypeAssignmentID = Ride.CarTypeAssignmentID) 

ON Driver.DriverLicenseNo = Car.DriverLicenseNo 

SET Driver.DriverCancellation = Count([Ride].[IsCancelled]), Driver.DriverRating = Avg([Ride].[DriverRating]);

我试图在Microsoft Access中执行上述SQL代码,但收到以下错误消息:

  

您的查询未将指定的表达式“ Driver Cancellation”作为聚合函数的一部分。

* P.s。我无法附加表格的图片,因此请忽略代码的INNER JOIN部分-应该正确。

1 个答案:

答案 0 :(得分:0)

UPDATE不支持聚合。您需要使用子查询。

UPDATE Driver d INNER JOIN
       (SELECT DriverLicenseNo, 
               Count([Ride].IsCancelled) as cnt,
               Avg([Ride].[DriverRating]) as avg_rating
        FROM (Car as c INNER JOIN
              CarTypeAssignment as cta
              ON c.LicensePlateNo = cta.LicensePlateNo
             ) INNER JOIN
             Ride as r
             ON cta.CarTypeAssignmentID = r.CarTypeAssignmentID
       ) as c 
       ON d.DriverLicenseNo = c.DriverLicenseNo 
    SET d.DriverCancellation = cnt,
        d.DriverRating = avg_rating;