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

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

Удаление повторяющихся записей [AccessXP]


KDS ©   (2002-09-12 12:57:00) 

Всем привет!
Можно ли средствами только Access
удалить повторяющиеся записи или все равно придется писать программку для чистки?
Если в Access заложена эта функция, то где ее искать?


KDS   (2002-09-12 16:38:00) [1]

>LordOfSilence и sniknik Спасибо, ребята!!!
Вы мне оба очень помогли, подсказав, что необх. создать новую таблицу на основе данной (с повторениями)!
>LordOfSilence узнал новое для себя
про First()/Last() (есть такие в Access2000)
>sniknik очень рационально и быстро.
Удачи Вам!


sniknik   (2002-09-12 15:21:00) [2]

да уж вопрос явно неоригинален, часто повторяется.
выполни простой запрос вроде приведенного в том же Access после переименуй табличку
SELECT * INTO ADVDISC1 FROM (SELECT DISTINCT * FROM ADVDISC)
удалятся только повторы причем только при совпадении всех полей, впрочем по одному тоже можно немного переделав запрос.


LordOfSilence   (2002-09-12 14:48:00) [3]

Дима, извините, если опять "невпопад", но может
следующие мысли Вам помогут.

1. Список повторений мы создали (Запрос1).
2. Создаем Запрос2 к Запросу 1,
в нем делаем группировку по повторяющемуся полю
( а может полям? вообще большой вопрос, что в
Вашем случае и как повторяется),
а к остальным полям применяем аггрегирующие функции
First()/Last() (есть такие в Access2000).

Таким образом, у нас есть список записей, на основе
которого мы можем создать новую таблицу, старую "грохнуть"
и т.п. - на Ваше усмотрение.

Только что смоделировал эту ситуацию, вроде работает.
Подразумевается, что повторяется поле Pole1.

SELECT [Запрос1].Pole1, Last([Запрос1].Pole2) AS [Last-Pole2], Last([Запрос1].Pole3) AS [Last-Pole3], Last([Запрос1].Pole4) AS [Last-Pole4]
FROM [Запрос1]
GROUP BY [Запрос1].Pole1;


LordOfSilence   (2002-09-12 14:06:00) [4]

>KDS
Эта тема довольно живо обсуждалась здесь пару дней назад,
поищите ее, если не лень.


KDS   (2002-09-12 13:58:00) [5]

>LordOfSilence Спасибо за внимание
Выборку повторяющихся я сделал вручную SQL-запросом.
Этот список есть.
Уточняю вопрос:
Необходимо, чтобы осталось по одной записи.
При Вашем предложении удалятся все повторяющиеся.
Т.е. было две одинаковые записи, а станет ноль,
а мне необх. оставить только одну, любую.


LordOfSilence   (2002-09-12 13:08:00) [6]

В среде Access создайте новый запрос с помощью
мастера "повторяющиеся записи", ответив на
задаваемые вопросы. Посмотрите на результат
отработки запроса (это пока только выборка).
После этого меню "Запрос\Удаление" (до этого
переключатель стоял в режиме "выборка").
Произведите необходимые изменения в дизайнере
запроса и, наверное, все...


Наверх

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