2016-01-19 2 views
1

Я работаю над своей курсовой работой A2, где мы используем доступ для создания системы управления базами данных. Для части моей системы у меня есть запрос, который подсчитывает количество элементов, которые пользователь арендовал в течение заданного периода времени. Теперь мне нужно обновить это значение и вставить его в таблицу users.«Операция должна быть обновляемым запросом» в UPDATE с запросом JOIN to GROUP BY

В таблице «Пользователи» есть поле «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; 

, который до сих пор дает ошибку.

ответ

1

В некоторых случаях нет необходимости создавать временную таблицу, как описывает GavinP в своем ответе, но Access поддерживает «Функции агрегирования домена», которые часто могут использоваться для решения проблемы. В вашем случае вы можете использовать функцию DLookUp() следующим образом:

UPDATE Users SET 
    GamesRentedThisMonth = DLookUp("CountOfOrderID", "UserGamesRentedThisMonth", "UserID=" & ID) 
0

Вы не можете использовать обобщающий запрос в обновлении в Access. Это боль. Так было с JET 4, к сожалению. «Обычный» метод, чтобы избежать этого, - сначала создать временную таблицу с суммируемыми значениями, а затем использовать ее в соединении с запросом на обновление адресата. В вашем случае что-то вроде делает UserGamesRentedThisMonth запрос в запрос таблицы делают создание tblTemp и изменение исходного запроса к

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

Надежда, что помогает.

Смежные вопросы