Как создать коррелированный подзапрос обновления в MS-Access? - PullRequest
0 голосов
/ 24 июля 2010

Я нахожусь в процессе нормализации нескольких таблиц, и я добавил суррогатный первичный ключ в таблицу с именем Exams, в которой содержатся названия экзаменов.

Ранее дочерние таблицы просто использовали полное имя экзамена в качестве записи FK.

Теперь, когда я добавил в таблицу автонумерованное поле, я хочу обновить записи, которые его используют, например таблицу, из которой получены вопросы, так как их более тысячи.

Прохождение каждого экзамена с измененным обновлением, как только я нахожу имя, каждый раз займет некоторое время, поэтому я решил написать коррелированный подзапрос в запросе UPDATE. Запрос выглядит так:

UPDATE tblExamQuestion
SET ExamID = (SELECT ExamID FROM tblExam WHERE ExamName = tblExamQuestion.ExamName);

К сожалению, как только я напишу часть подзапроса, Access отказывается предоставить мне опцию Run и просто отображает Представление проекта , Представление таблицы и Представление SQL для этого запроса. Однако он по-прежнему отображает значок Update Query в обозревателе объектов.

Есть ли правильный способ написать это, чтобы Access не расстраивался?

Использование: Access 2007 с базой данных Access 2003 MDB.

1 Ответ

3 голосов
/ 24 июля 2010

Почему бы и нет:

UPDATE tblExamQuestion
INNER JOIN tblExam 
ON tblExam.ExamName = tblExamQuestion.ExamName
SET tblExamQuestion.ExamID = tblExam.ExamID 
...