У меня есть еще один вопрос по SQL / access 2007, который кажется очень простым, но я не уверен, как Google для него.
У меня есть таблица STUDENT-TERMS со следующими полями:
StudentTermID
StudentID (ссылки на таблицу STUDENT)
TermID (ссылки на таблицу TERMS)
TermGPA (это фрагмент информации, которую нужно записать)
Стол СТУДЕНТА выглядит так:
StudentID
Имя
Таблица TERMS выглядит следующим образом:
Termid
Дата начала
Дата окончания
У меня есть документ со всей информацией, которая загружается в документ Access. Этот документ, который я получаю, имеет те же идентификаторы студентов и терминов, которые существуют в базе данных.
Затем я могу выполнить запрос на добавление, чтобы получить данные в таблицу STUDENT-TERMS. Что хорошо.
Как мне написать запрос так, чтобы для каждого студента была только одна запись каждого термина?
Так, например, у меня есть эти данные в таблице прямо сейчас:
StudentTerm ID: 5
StudentID: Тара
TermID: 1011Осень
TermGPA: 3,8
Когда я загружаю и добавляю новый документ, он может по-прежнему содержать эту информацию о Таре, и я хочу, чтобы БД сказала: «Эй, у нас это уже есть, пропустите это», как при добавлении. Как мне это указать?
ЗДЕСЬ ВЫВОД / ОТВЕТ / РЕШЕНИЕ:
Спасибо за вашу помощь всем. Вот что я и сделал:
Я создал новое поле в таблице с именем StudentTerm, которое содержит объединение StudentID и Term (например, Tara1011Autumn). Это поле проиндексировано без дубликатов.
Запрос, выполняющий добавление, выглядит следующим образом:
INSERT INTO StudentTerms (StudentID, TermID, GPA, StudentTerm)
ВЫБРАТЬ
Upload_Students.StudentID, Upload_Students.TermID, Upload_Students.GPA,
[Upload_Students]! [StudentID] & [Upload_Students]! [TermID] AS Expr1
ОТ студентов ВНУТРЕННЕЕ СОЕДИНЕНИЕ Upload_Students ON Students.StudentID = Upload_Students.StudentID;
Этот запрос пытается заполнить поле StudentTerm значением Tara1011Autumn. Если эта строка уже существует в таблице, запись не будет добавлена.