我正在尝试执行以下操作: 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部分-应该正确。
答案 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;