powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Удаление дубликатов записей
14 сообщений из 14, страница 1 из 1
Удаление дубликатов записей
    #33492467
anton_81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть табличка с полями PEOPLE_ID и DAT_PRINT (тип Date ). Некоторые записи дублируются - имеют одинаковые значения в поле PEOPLE_ID .
Как оставить только те записи у которых стоит дата печати ( DAT_PRINT ), а дубликаты этих записей без проставленной даты печати удалить??
...
Рейтинг: 0 / 0
Удаление дубликатов записей
    #33492487
AleksMed
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
delete from <TableName> a where a.PEOPLE_ID in (select b.PEOPLE_ID from <TableName> b where b.People_ID=a.PEOPLE_ID and empty(b.DAT_PRINT))
...
Рейтинг: 0 / 0
Удаление дубликатов записей
    #33493155
Igor Korolyov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hi AleksMed!

Это не только дубликаты удалит! А вообще все те записи, где хотя-бы в одном
"дубле" есть пустая дата!!!

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Удаление дубликатов записей
    #33493295
AleksMed
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Igor Korolyov
Hi AleksMed!

Это не только дубликаты удалит! А вообще все те записи, где хотя-бы в одном
"дубле" есть пустая дата!!!

Posted via ActualForum NNTP Server 1.3

Угу, незачем иметь ID с пустой датой.
...
Рейтинг: 0 / 0
Удаление дубликатов записей
    #33493525
anton_81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Что я сделал не так?:
Я создал таблицу POLISb - копию таблицы POLISa и запустил :

Код: plaintext
delete from POLISa where POLISa.PEOPLE_ID in (select POLISb.PEOPLE_ID from POLISb where POLISb.People_ID=POLISa.PEOPLE_ID and empty(POLISb.DAT_PRINT))

в итоге из таблицы POLISa удалились ВСЕ дублированные записи и записи с пустыми DAT_PRINT .

Дело в том, что таблица у меня одна ( POLISa ) и в ней находяться дублированные (по PEOPLE_ID ) записи. Необходимо удалить ТОЛЬКО дубликаты с пустыми DAT_PRINT !
Есть решение этой задачки???
...
Рейтинг: 0 / 0
Удаление дубликатов записей
    #33495083
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А что, просто записи с пустыми DAT_PRINT не удалить?
(Это я к тому, что разве они нужны?)
...
Рейтинг: 0 / 0
Удаление дубликатов записей
    #33495376
Igor Korolyov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hi anton_81!

1) Что делать если среди дублей будет НЕСКОЛЬКО записей с непустой датой?
2) Что делать если среди дублей ВСЕ записи будут иметь пустую дату?
Ответь сначала на эти вопросы, тогда посмотрим что дальше тебе советовать :)

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Удаление дубликатов записей
    #33497393
anton_81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Igor Korolyov
1) Что делать если среди дублей будет НЕСКОЛЬКО записей с непустой датой?
2) Что делать если среди дублей ВСЕ записи будут иметь пустую дату?
Ответь сначала на эти вопросы, тогда посмотрим что дальше тебе советовать :)

1) если несколько - то оставлять все дубли (или оставить одну любую запись если возможно)
2) удалить все эти записи с пустой датой

вот так. очень надеюсь на Вашу помощь :)
...
Рейтинг: 0 / 0
Удаление дубликатов записей
    #33498299
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может попробовать через select ?
Код: plaintext
1.
2.
3.
select distinct * from TableFrom a where !empty(a.DAT_PRINT) into table temp
select TableFrom
delete all
append from temp
или, если память позволяет (таблица не слилком большая):
Код: plaintext
1.
2.
3.
select distinct * from TableFrom a where !empty(a.DAT_PRINT) into array temp
select TableFrom
delete all
append from array temp
...
Рейтинг: 0 / 0
Удаление дубликатов записей
    #33498487
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
anton_81 Igor Korolyov
1) Что делать если среди дублей будет НЕСКОЛЬКО записей с непустой датой?
2) Что делать если среди дублей ВСЕ записи будут иметь пустую дату?
Ответь сначала на эти вопросы, тогда посмотрим что дальше тебе советовать :)

1) если несколько - то оставлять все дубли (или оставить одну любую запись если возможно)
2) удалить все эти записи с пустой датой

вот так. очень надеюсь на Вашу помощь :)
Можно ли сформулировать условие следующим образом:

1) Удалить ВСЕ записи с пустой датой
2) Среди оставшихся удалить дубли

Отличия заключаются в том, что делать если запись НЕ имеет дублей, но ее дата пустая?

Кстати, таблица имеет уникальный идентификатор записи? Т.е. некое поле, значение которого гарантировано уникально для ВСЕХ записей таблицы. По этому полю дублей быть не может в принципе.
...
Рейтинг: 0 / 0
Удаление дубликатов записей
    #33498509
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, кстати, если надо удалить все записи с пустым значением DAT_PRINT вне зависимости от того, есть у них дубли или нет, то можно так:

Код: plaintext
1.
2.
3.
4.
5.
6.
SET DELETED OFF
SELECT POLIS
DELETE ALL
INDEX ON PEOPLE_ID TAG Doubl UNIQUE FOR NOT EMPTY(DAT_PRINT)
RECALL ALL
DELETE TAG Doubl

Правда, это требует эксклюзивного открытия таблицы.

Остануться только уникальные записи с заполненным значением DAT_PRINT. Но также будут удалены и записи у которых нет дублей, но значение поля DAT_PRINT не указано.
...
Рейтинг: 0 / 0
Удаление дубликатов записей
    #33498587
Igor Korolyov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hi anton_81!

>> 1) Что делать если среди дублей будет НЕСКОЛЬКО записей с непустой датой?
>> 2) Что делать если среди дублей ВСЕ записи будут иметь пустую дату?

> 1) если несколько - то оставлять все дубли
ВСЕ - это значит и с пустой датой тоже???

> (или оставить одну любую запись если возможно)

в SQL нету понятия "любую" - впрочем и просто с точки зрения формальной
логики это невозможно. В лучшем случае можно оперировать физическим порядком
следования записей - но SQL этого конечно не сделает - впрочем простым
циклом можно всё решить.

> 2) удалить все эти записи с пустой датой

И тут ты противоречишь сам себе - ты же говорил что нужно оставить одну из
группы - а теперь говоришь что нет...

Впрочем что спросил то и получи:

Код: plaintext
1.
2.
3.
DELETE FROM POLISa ;
    WHERE POLISa.PEOPLE_ID in ;        (SELECT POLISa.PEOPLE_ID ; 
FROM POLISa ;            GROUP BY People_ID ;            HAVING COUNT(*) > 
 1 )        AND EMPTY(POLISa.DAT_PRINT)
В чём был смысл делать копию
таблицы я не понял.

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Удаление дубликатов записей
    #33499597
anton_81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Igor Korolyov
Впрочем что спросил то и получи:


Спасибо, всё сработало! :)
Тему закрываю 8)
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Удаление дубликатов записей
    #36831147
manitor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Многие программы могут поиск и удаление дубликатов файлов . Скачай эту, например.
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Удаление дубликатов записей
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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