Я разрабатываю БД доступа, где в одном из входных данных таблицы регулярно появляются дубликаты (что я в конечном итоге хотел бы) в первичном ключе из-за использования некоторого старого программного обеспечения по причинам, как показано ниже:
ID | Fluid | Designer | Team |
--------------------------------------------------
A | Water | John | Piping |
A | Water | James | Piping |
B | Steam | Sam | Piping |
B | Steam | Sam | Modeling |
C | Hydrogen | Joe | Piping |
D | Steam | Joe | Piping |
Дублирующий запрос со ссылкой на поле ID дает:
ID | Fluid | Designer | Team |
--------------------------------------------------
A | Water | John | Piping |
A | Water | James | Piping |
B | Steam | Sam | Piping |
B | Steam | Sam | Modeling |
Автоматическое удаление этих дубликатов нежелательно, так как важно знать, скажем, о том, что программная модель сменила дизайнера или была передана другой команде. Таким образом, они проверяются вручную.
Тем не менее, эта таблица может содержать до 30 полей, и поиск единственного не дублирующегося поля может быть бельмом на глазу. Таким образом, каким был бы мой желаемый результат:
ID | Fluid | Designer | Team |
--------------------------------------------------
A | | John | |
A | | James | |
B | | | Piping |
B | | | Modeling |
У меня очень мало опыта работы с SQL, но я провел некоторое время с использованием Visual Basic, поэтому я предполагаю, что некоторые критерии, такие как:
if(record(n)=record(n-1), display("")
Однако из моего базового понимания доступа и SQL я знаю, что соотнесение Visual Basic — это, безусловно, сравнение яблок с апельсинами.
У меня MS Access 2007-2010.
Изменить: сейчас изучаю нормализацию (извините, я новичок). Более подробно о моей проблеме с БД. Также обновлена финальная таблица выше.
Как я считаю, что моя БД должна работать:
- Импорт данных из ПО (ежедневно). Получается таблица 1.
- Используйте дублирующий запрос, чтобы найти дубликаты в столбце ID. Это таблица 2.
- Используйте запрос для создания таблицы, в которой будут отображаться повторяющиеся идентификаторы вместе с соответствующим столбцом, который не дублируется.
Ошибки в программном обеспечении происходят из-за того, что оно вносит новые данные в уже существующие данные, но удаляет только точные дубликаты. Если, скажем, над моделью работает другой пользователь, то вместо обновления текущего идентификатора он добавляет новую строку со всеми теми же данными, за исключением другого пользователя.