Исключение пар данных из запроса на основе таблицы?

У меня есть огромная и беспорядочная база данных объектов, в которой много дубликатов. Адреса были введены таким случайным образом, что я буду делать много запросов, чтобы выявить возможные дубликаты. Моя цель состоит в том, чтобы в каждом запросе идентифицировать возможные дубликаты, а затем человек фактически просматривает список и отмечает каждую пару либо как не дублирующую, либо как возможную дублирующую.

Когда кто-то помечает пару объектов как не дублирующую, я хочу записать эту пару данных в таблицу, чтобы, когда один из запросов в противном случае вернул бы эту пару, вместо этого она была бы исключена. Я в недоумении, как это сделать. В настоящее время я использую MS Access для SQL-запросов и имею элементарные визуальные базовые знания.

Пример того, как это должно работать Запрос 1 выполняется для поиска дубликатов по городу и названию компании. Это возвращает нас к тому, что объекты 1 и 2, 3 и 4, 5 и 6 являются возможными дубликатами. Первые две пары являются дубликатами, которые мне нужно исправить, но 5 и 6 действительно являются отдельными объектами. Я нажимаю, чтобы записать, что объекты 5 и 6 не являются дубликатами, что записывает данные в таблицу. Когда запрос 1 выполняется снова, он не возвращает, что 5 и 6 являются возможными дубликатами.

Для справки, дубликаты адресов выглядят примерно так, поэтому должно быть несколько запросов.

Frank's Garage, 123 2nd St
Frank's Garage LLC, LLC, 123 Second st
Frank's Garage and muffler, 123 2nd Street
Frank's, 12 2nd st

Любая помощь высоко ценится!


person Robert Patrician    schedule 30.06.2020    source источник


Ответы (1)


Единственный известный мне способ исправить это - создать основную таблицу названий компаний и связать эту таблицу PK с записями в исходной таблице. Это будет трудный и утомительный процесс просмотра записей и удаления дубликатов из мастера и связывания оставшихся ПК дублирующейся группы с исходными записями (как вы обнаружили).

Создайте основную таблицу компании DISTINCT и адресуйте данные из исходной таблицы. Включите поле автонумерации для генерации ключа. Соедините таблицы в полях компании/адреса и ОБНОВИТЕ поле в исходной таблице с помощью этого ключа. Имейте другое поле в исходной таблице, чтобы получить замену внешнего ключа.

Имейте числовое поле (ReplacementPK) в главной таблице. Отсортируйте и просмотрите записи и введите ключ, который вы хотите сохранить для группы дубликатов компаний/адресов. Создайте запрос, объединяющий таблицы в исходных ключевых полях, обновите поле NewFK в исходной таблице с помощью выбранного ReplacePK из мастера.

Когда все выглядит хорошо:
Удалите компанию и адрес, а также исходные поля FK из исходной таблицы.
Удалите записи из мастера, в которых PK не совпадает с PK замены.

person June7    schedule 30.06.2020
comment
К счастью, данные не зависят от того, как я их редактирую. Поэтому, если я исправлю повторяющуюся запись, мне не нужно будет ничего делать в моем файле доступа, потому что он просто перестанет возвращаться со следующим обновлением. Как мысль о том, как я могу хранить дубликаты: как насчет объединенного ключа? Поэтому, если запись 111 и запись 222 определены как не дублирующиеся, я могу просто сохранить 111222 как не дублирующуюся и исключить ее из запроса. - person Robert Patrician; 30.06.2020
comment
Не уверен, что понимаю, что вы имеете в виду под «исключить». Разве 222 не может быть дубликатом 333? На самом деле нужно просмотреть дубликаты как группу и выбрать один из них в качестве «официального» значения, а другие являются дубликатами, которые необходимо устранить. Что означает «вне того, как я редактирую»? - person June7; 30.06.2020
comment
99% дубликатов будут парами дубликатов, у нас просто есть несколько вопиющих преступников. Поэтому, если 111, 222 и 333 являются дубликатами, это нормально, что он возвращает три дубликата 111222, 111333 и 222333. Как только первые два будут исправлены, третий перестанет существовать. Поэтому, если я узнаю, что 111 и 444 не являются дубликатами, все, что нужно сохранить, это 111444 в подтвержденной таблице отсутствия дубликатов, и эта таблица будет исключена из запроса в вычисляемом поле KEY1 и KEY2. - person Robert Patrician; 30.06.2020
comment
Что ж, данные вашего примера представляли собой группу из 4 дубликатов, поэтому я принял это за норму. Попробуйте свою идею и посмотрите, что получится. - person June7; 30.06.2020