Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Выявление дублированных записей [D5, dBase, FoxPro]


Alexey V. ©   (2006-04-21 09:27:00) 

Имеется таблица (пл. поручения). Необходимо найти одинаковые записи, если они есть. Сравнение по одному полю (№ п/п, сумма и т.д.) ничего не даст. Надо находить совпадение сразу по нескольким полям. Как это сделать?


Alexey V.   (2006-04-24 17:45:00) [1]

Я в банке работаю и уже использую совет [5]


evvcom   (2006-04-24 16:52:00) [2]

Ну так п/п формируются в твоей программе? И в dbf ты их экспортируешь? Я понимаю, банковскую выписку анализировать. Или ты в банке работаешь? И как раз получаешь эти п/п от клиентов? Так или иначе, правильный ответ тебе уже дан. Дерзай.


Alexey V.   (2006-04-24 16:28:00) [3]

2 [9] evvcom
Да, это хорошо бы, но Центральный банк пока принимает п/п только в виде dbf файлов, а контроль желательно проводить в выходном файле. Банковский опердень, естественно, не на dbf.


Sergey13   (2006-04-24 16:06:00) [4]

2[9] evvcom ©   (24.04.06 16:02)
Это способ не допустить дубликатов, а тут надо показать имеющиеся. 8-)


evvcom   (2006-04-24 16:02:00) [5]


> Вот еще один нестандартный способ:

А вот еще один стандартныйспособ:
Перейти на "нормальную" СУБД и наложить UNIQUE CONSTRAINT.


Anatoly Podgoretsky   (2006-04-24 14:45:00) [6]

И предлагаешь после этого ее от туда удалять :-)


Dummes   (2006-04-24 14:28:00) [7]

Вот еще один нестандартный способ:

Создаем таблицу (нпр. в Парадокс)
Индексируем (PK) те поля, которые не должны повторяться
Вставляем Isnert в блок try except
Если возникает исключение, то запись повторяющаяся,
если нет, то уникальная!


Alexey V.   (2006-04-21 09:55:00) [8]

to [5] Sergey13
Классно. Никогда бы не додумался, что можно писать count(*)
Спасибо.


Sergey13   (2006-04-21 09:45:00) [9]

2 [4] Alexey V.   (21.04.06 09:43)
Select f1,f2...fN, count(*)
from tablename
group by f1,f2...fN
having count(*) > 1


Alexey V.   (2006-04-21 09:43:00) [10]

to Sergey13

Спасибо, работает. Остается только из полученной выборки найти записи, где count(*) > 1


vovnuke   (2006-04-21 09:37:00) [11]

в [1]указано просто как получить все записи удовлетворяющие определенным условиям.


vovnuke   (2006-04-21 09:33:00) [12]

select *
from tabl
where f1 = :p1 and f2 = :p2 and ...


Sergey13   (2006-04-21 09:33:00) [13]

Select f1,f2...fN, count(*)
from tablename
group by f1,f2...fN


Наверх

Титульная страница Поиск, карта сайта Написать письмо