@yura_born

Как избавиться от дублей в БД?

Есть несколько офисов которые работают в локальных версиях БД на Access (в БД есть таблица сотрудники и таблица с заключенными договорами), после чего эти базы, ежемесячно сливаются в БД главного офиса и парсятся в БД на MySQL.
Проблема в следующем:
после парсинга в БД MySql оказывается несколько записей одного и того же сотрудника но с разными id естественно, т.к. сотрудники переходят из одного офиса в другой и в БД при переходе карточка сотрудника закрывается а в другом открывается.
Может у кого-нить была схожая ситуация как правильно разрулить? Необходимо как-то избавиться от дублей сотрудников, или как-то соеденить их. В итоге должно получиться что при выборе сотрудника мне необходимо получить информацию о всех договорах заключенных сотрудником, который мог работать в нескольких офисах в разное время.
Надеюсь понятно описал.
  • Вопрос задан
  • 100 просмотров
Пригласить эксперта
Ответы на вопрос 2
2ord
@2ord
Находится выборкой
Inner join on - пересечением по полям ФИО и ДР на ту же таблицу
where fio=? And birthday=?
Ответ написан
Комментировать
@yura_born Автор вопроса
Не все здесь так просто, во-первых фамилии которые требуется объеденять неизвестны их может быть и 10 и 20...

Есть вот такая идея:
5e96b19d4f920223012664.jpeg
т.е.:
1) создаем таблицу t-user-main-id c уникальным id;
2) создаем таблицу t-user-mix-id для связки с таблицами юзеров;
3) после чего создаю функционал, который пробегается по таблице юзеров и выбирает всех пользователей с одинаковыми полями фамилия-имя-отчество-ДР;
4) вывожу их с возможность выбора для дальнейшего объединения (руками проставляю чекбоксы напротив нужных юзеров);
5) после чего делаю выборки (использую) id из таблицы t-user-main-id;
Далее -> в след. месяце когда приходят выгрузки опять прогоняю и смотрю если появился новый юзер и его id нет в таблице t-user-mix-id то я опять загружаю всех пользователей используя id_main одного из пользователей который уже был внесен.

Вот такая логика....... хотелось бы экспертных мнений это нормально? или можно как-то сделать лучше и эффективней...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы