![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Чистка БД от задвоек [D7]
Kley © (2007-09-12 21:23:00)Здравствуйте
подскажите плиз как найти в БД
задвоенные записи и потом удалить одну из задвоек
т.е. почистить БД от задвоенных записей
delphi+Tps через ODBC драйвер
Бакук (2007-09-14 09:09:00) [1]http://www.sql.ru/faq/faq_topic.aspx?fid=711
zdm77 (2007-09-13 18:11:00) [2]погодите. АП нужно определится изначально вроде как с тем, что считать задвоенными полями. Иванов и ИВАНОВ или ИвАнОв - это один и тот-же чел? Что в БД небыл предусмотрен признак уникальности? ну ИНН, паспортные данные или другой признак? Если так, то - вешалка. Запустить редактор, открыть таблицу, и методом (с учетом человеческого фактора) пройти по полям и удалить, которые по мнению АП являются задвоенными. Если есть ключи, то удалить сначала значения из ключуемых таблиц.... в общем гемор одназначно.
DrPass (2007-09-13 11:51:00) [3]
> Desdechado © (13.09.07 10:40) [6]
> Это попольно. Но уникальность может требоваться на комбинацию
> полей или на всю строку
А какая разница. Ну, укажет человек в запросе вместо одного поля несколько...
Ega23 (2007-09-13 11:08:00) [4]Я бы всё скриптами на SQL делал
А вообще разработчику такой БД нехило было бы ознакомиться с понятиями "Нормальная форма" с первой по четвёртую включительно.
Anatoly Podgoretsky (2007-09-13 11:01:00) [5]> Desdechado (13.09.2007 10:40:06) [6]
Что восстанавливать, это же задача не механическая, а интеллектуальная, только автор знает как значения одного поля влияют на значение в других таблицах, связи то могут быть и не явными и явными и автоинкриментными и далее. При создании новой таблицы и замены ее старой - при автоинкрименте можно выкидывать базу.
Desdechado (2007-09-13 10:40:00) [6]> А если учесть внешние и первичные ключи, то вешаемся.
Их можно временно отключить/удалить, а потом восстановить.
Но есть большие сомнения, что в БД с таким мусором есть хоть какие-то ключи.
Юрий Зотов © (13.09.07 09:23) [5]
Видимо, требования появились позже, после осознания появления дублей.
DrPass © (12.09.07 23:14) [4]
Это попольно. Но уникальность может требоваться на комбинацию полей или на всю строку.
Юрий Зотов (2007-09-13 09:23:00) [7]Эва... а как же так БД была сделана, что дубли не допускаются, но требования уникальности не были наложены?
DrPass (2007-09-12 23:14:00) [8]Сперва следует посмотреть, что задвоилось - select bebebe, count(*) from zuzuzu group by bebebe having count(*) > 1, и потом уже думать, как с ними проще расправиться
Anatoly Podgoretsky (2007-09-12 22:49:00) [9]> Desdechado (12.09.2007 22:08:02) [2]
А если учесть внешние и первичные ключи, то вешаемся.
Desdechado (2007-09-12 22:08:00) [10]Делаем копию структуры таблицы и потом
INSERT INTO newtbl SELECT DISTINCT * FROM oldtbl
Удаляем старую таблицу, переименовываем новую.
MsGuns (2007-09-12 21:53:00) [11];)