powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / как оставить только одну копию дубля
7 сообщений из 7, страница 1 из 1
как оставить только одну копию дубля
    #32261169
lkkj
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Дубли по трем полям, но различающиеся какими-то другими полями,
потому простой select distinct не сработает.
subj ?

Например есть
Fam,Im,Ot,Dat_r,Adress,tralala
Иванов,Иван,Иваныч,01/01/1960,lalala,tralala...
Иванов,Иван,Иваныч,22/01/1960,nanana,tralala...

Может отличаться не только по Dat_r, но и почему-то еще,
т.е. любые поля кроме Fam,Im,Ot могут совпадать или различаться,
но каждая запись уникальна.
Мне нужен только один (первый) Иванов Иван Иваныч
...
Рейтинг: 0 / 0
как оставить только одну копию дубля
    #32261193
АлександрК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SELECT TOP 1 Fam, Im, Ot, Dat_r, Adress, tralala ;
FROM TableName ;
ORDER BY Fam, Im, Ot ;
INTO CURSOR CursorName
...
Рейтинг: 0 / 0
как оставить только одну копию дубля
    #32261229
lkkj
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
отбирается только первая запись и все, а в таблице дофига записей и дофига Петровых и Сидоровых и т.д.
...
Рейтинг: 0 / 0
как оставить только одну копию дубля
    #32261237
АлександрК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не совсем уверен, но попробуй примерно так:

SELECT TOP 1 Fam, Im, Ot, Dat_r, Adress, tralala ;
FROM TableName ;
GROUP BY Fam, Im, Ot ;
ORDER BY Fam, Im, Ot ;
INTO CURSOR CursorName
...
Рейтинг: 0 / 0
как оставить только одну копию дубля
    #32261270
Фотография tpg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А так?

SELECT Fam, Im, Ot, Dat_r, Adress, tralala ;
FROM TableName ;
GROUP BY Fam, Im, Ot ;
ORDER BY Fam, Im, Ot ;
INTO CURSOR CursorName
...
Рейтинг: 0 / 0
как оставить только одну копию дубля
    #32261281
Andrey-750
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SELECT DISTINCT FAM + NAM + OT AS FIO, DT_R ... <И ВСЁ ОСТАЛЬНОЕ> FROM ... WHERE ... INTO ...
...
Рейтинг: 0 / 0
как оставить только одну копию дубля
    #32261303
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если тебе абсолютно все-равно какой именно из дублей будет отображен, то построй индекс типа UNIQUE. Он как раз для таких случаев и предназначен.

INDEX ON Fam+Im+Ot TAG FIO UNIQUE

Индекс типа UNIQUE - не запрещает ввод повторяющихся значений, но вот отображает только уникальные (первые попавшиеся). Соответсвенно, тебе надо будет всего-лишь установить его как главный

select MyTab
SET ORDER TO FIO

Ну или через запрос, который привел tpg . Запросы Александра и Андрея вернут совсем не то, что нужно, поскольку как опция TOP, так и DISTINCT действуют на ВЕСЬ результат выборки, а не в пределах одной группы, что здесь требуется.

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


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