Как избавиться от дубликатов записей с уникальными идентификаторами в MS Access 2003? - PullRequest
2 голосов
/ 05 мая 2010

Я работаю над базой данных MS Access с множеством повторяющихся записей. Проблема в том, что есть таблица учеников, и иногда вместо того, чтобы просто обновлять информацию о конкретном ученике, кто-то просто добавляет учащегося снова с другим идентификатором. Я хочу избавиться от всех дубликатов (что является проблемой, так как их практически невозможно отличить), что было бы хорошо, просто удалив дубликаты, за исключением того, что другие таблицы могут полагаться на дубликаты. Как я могу изменить все таблицы, которые зависят от определенного идентификатора, чтобы использовать тот идентификатор, который я предпочитаю хранить?

Вот как это выглядит:

 Student ID | L. Name |F. Name

 ANDY-01    | Andy    |  Andy

 ANDY-02    | Andy    |  Andy

Тогда в таблице курсов были бы курсы, которые прошел бы ANDY-01, и курсы ANDY-02. Я хочу объединить все записи во всех таблицах, которые имели бы ANDY-01 и ANDY-02 как ANDY-01. Как бы я пошел по этому поводу?

(Не беспокойтесь о том, как я различаю ANDY-01 и ANDY-02)

Ответы [ 2 ]

2 голосов
/ 05 мая 2010

+ 1 за ответ Рихо. Чтобы обновить несколько таблиц, вы можете создать процедуру, подобную приведенной ниже, вручную обновить значения идентификаторов и выполнить процедуру для каждого учащегося.
Если у вас есть таблица или запрос, отображающий старые и новые идентификаторы, вы можете написать другую процедуру для чтения таблицы и вызвать эту процедуру для каждого учащегося.

Public Sub UpdateStudent()
    Dim oldID As String
    Dim newID As String

    oldID = "ID1"
    newID = "ID2"

    DoCmd.Execute "update another_table set student_id='" & newID & "' where student_id=" & oldID
    DoCmd.Execute "update yet_another_table set student_id='" & newID & "' where student_id=" & oldID
End Sub
2 голосов
/ 05 мая 2010

Вам просто нужно обновить SQL:

update another_table set student_id=:ID2 where student_id=:ID1

...