Domanda

Sono nel processo di normalizzazione di alcuni tavoli e ho aggiunto una chiave primaria surrogata a una tabella chiamata Exams che contiene titoli di esame.

In precedenza, i tavoli figlio userebbero semplicemente l'intero nome dell'esame come voce FK.

Ora che ho aggiunto un campo autonomato alla tabella, voglio aggiornare le voci che lo usano come la tabella in cui proviene le domande come ci sono oltre un migliaio di loro.

Aspettare ciascun esame con un aggiornamento modificato una volta che trovo il nome ogni volta che impiega un po ', quindi ho deciso di scrivere una sottoquery correlata in una query UPDATE. La query è simile a questa:

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

Sfortunatamente, una volta scritto la porzione di sottoquery, l'accesso si rifiuta di darmi l'opzione Run e basta visualizzare la scheda Design , Scheda tecnica Visualizza e Vista SQL < / em> per quella query. Tuttavia, visualizza ancora l'icona Aggiorna nell'esploratore dell'oggetto.

C'è un modo corretto per scrivere questo in modo che l'accesso non si arrabbia?

Utilizzo: Access 2007 con un database MDB di accesso 2003.

È stato utile?

Soluzione

Perché non:

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top