Показать сообщение отдельно
  #7  
Старый 05.04.2009, 12:30
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,723
Репутация: 52347
По умолчанию

Цитата:
Сообщение от BetaCoder
Всем доброго времени суток.
в таблице rss есть поле link
мне нужно чтобы по этому полю искались дубликаты, проще говоря чтобы в этой таблице не было повторяющихся записей, а проверять это получится только по полю link, потому что ссылка уникальна, а остальные поля, такие как Тема - не уникальны
Вот что вы попросили. Найти дубликаты. Я вам и дал код для поиска дубликатов:
Код:
ADOQuery.SQL.Text := 'select Link from rss group by link having Count(Link)>1';
ADOQuery.Open;
В итоге вы получите в ADOQuery набор данных с которыми что-то надо делать, как минимум имеет смысл посмотреть их.

Что-бы удалить уже имеющиеся дубликаты я вам дал второй код:
Код:
ADOQuery.SQL.Text := 'delete Link where id in (select Max(id) from rss group by Link having Count(Link)>1)';
ADOQuery.ExecSQL;
НО для выполнения второго запроса надо уже использовать метод ADOQuery.ExecSQL т.к. запросы на удаление,вставку,изменение данных невозвращает никакого набора данных.

Теперь вы уже хотите проверять данные перед вставкой на дубликаты, а это уже третий запрос. Третьего запроса можно избежать, если вы на таблицу rss построите уникальный индекс по полю Link, но создать уникальный индекс на данные содержащие повторяющиеся значения невозможно, поэтому прежде чем его создать пропустите свои данные через запрос на удаление, о котором я писал чуть выше. Об этом я писал вам в теме из раздела БД.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием