Access Update Query: Запрос не включает указанное выражение как часть статистической функции - PullRequest
0 голосов
/ 19 октября 2018

Я пытаюсь сделать следующее: 1. Положите счет отмены каждого водителя из таблицы Ride (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]);

Я попытался выполнить приведенный выше код SQL в Microsoft Access, но получил следующее сообщение об ошибке:

Ваш запрос не включает указанное выражение «Отмена драйвера», какчасть агрегатной функции.

* Ps Я не могу прикрепить изображение своих таблиц, поэтому, пожалуйста, игнорируйте часть кода INNER JOIN - она ​​должна быть правильной.

1 Ответ

0 голосов
/ 19 октября 2018

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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...