Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / поиск двойников в таблице / 7 сообщений из 7, страница 1 из 1
12.10.2006, 14:20
    #34050600
startFOX
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
поиск двойников в таблице
Подскажите,

каким образом можно выявить наличие дублирующих записей (то есть записей, в которых одно из полей совпадает)

На данный момент использую нечто подобное
Код: plaintext
1.
2.
3.
4.
 SELECT count(*) FROM tmpl WHERE npss=k INTO ARRAY c1
  IF c1( 1 )> 1  THEN 
     .......
  ENDIF

Есть ли альтернативы? Без использования SELECT?
...
Рейтинг: 0 / 0
12.10.2006, 14:35
    #34050682
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
поиск двойников в таблице
Код: plaintext
1.
SELECT npss FROM tmpl INTO ARRAY c1 GROUP BY npss HAVING count(*)> 1 
Получим массив, в котором только те значения, которые имеются больше чем у одной записи.
...
Рейтинг: 0 / 0
12.10.2006, 14:40
    #34050710
startFOX
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
поиск двойников в таблице
Спасибо.

А можно ли выяснить этот вопрос без SQL-команды?

База, в которой приходится искать двойников большая, а машина слабенькая для выполнения запросов.

Суть задачи:
Для базы абонентов выяснить: есть ли конкретно у каждого абонента его "двойник" в этой же базе?
...
Рейтинг: 0 / 0
12.10.2006, 14:44
    #34050742
Проходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
поиск двойников в таблице
А на чем основана уверенность в необходимости сильной машины для выполнения запросов?
...
Рейтинг: 0 / 0
12.10.2006, 14:49
    #34050775
Jura.K
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
поиск двойников в таблице
Можно попробовать вот так
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
LOCAL lcOldNpss
INDEX ON npss TAG npss
SET ORDER TO npss
GO TOP
DO WHILE !EOF()
    lcOldNpss=npss
SKIP 
   IF npss==m.lcOldNpss
        && здесь сообщение или добавление в массив или в другую таблицу 
        && о двойнике 
        && если надо только один раз показать можно еще одну переменную     
        && завести, которую будем анализировать и не показывать если этот 
        && двойник уже показывался
   ENDIF 
ENDDO 
...
Рейтинг: 0 / 0
12.10.2006, 19:53
    #34051959
startFOX
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
поиск двойников в таблице
Спасибо всем откликнувшимся.
Не было возможности ответить сразу.

2 Jura.K
Окажусь на рабочем месте и попробую: что окажется быстрее

2 проходящий
Да, собственно ни на чем. Просто стало интересно: можно ли заставить программу работать эффективнее, в моем случае быстрее отрабатывать алгоритм. После выполнения запроса появляется окно "прогресса"...

Ещё раз спасибо.
...
Рейтинг: 0 / 0
13.10.2006, 08:27
    #34052381
foxwizard
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
поиск двойников в таблице
Привет.
select table1
* пакуем
pack
*Удаляем все записи
delete all
* Индексируем по полю , значения в котором не должны повторяться
(можно индексировать по условию, если значение_поля1+значение_поляN должны быть уникальны в пределах таблицы)
INDEX on Поле TAG temp UNIQUE
*Восстанавливаем записи
recall all

у записей с одинаковым значением будет восстановлена только одна.

А вообще лучший способ избавиться от дубликатов - не делать их.
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / поиск двойников в таблице / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]