Читаем Microsoft Access 2007 полностью

3. Укажите таблицу Заказы и нажмите кнопку Далее .

4. Выберите поля Дата , Товар , Клиент (рис. 6.33) и нажмите кнопку Готово .

Рис. 6.33. Здесь следует задать поля с повторяющимися значениями

Будет выведен список повторений по таблице Заказы (рис. 6.34).

Рис. 6.34. Результат поиска повторяющихся записей

Если записи различаются значениями других полей, не вошедших в выборку, возможно, лучшим способом удаления будет удаление записей вручную, ведь только вы знаете критерий, по которому можно отделить корректные записи от ошибочных.

В данном случае записи действительно полностью одинаковые, и процесс их удаления хотелось бы автоматизировать запросом. Если просто преобразовать данный запрос на выборку в запрос на удаление, то удалятся все повторяющиеся записи. Обычно все же требуется оставить по одному экземпляру записей.

Чтобы получить желаемый результат, следуйте нижеприведенным действиям.

1. Добавьте в таблицу временное поле Сохранить логического типа. Это поле будет хранить значение 1 , если запись требуется оставить, и значение 0 – если удалить.

2. Оставьте все записи с минимальным значением поля Номер . Щелкните правой кнопкой мыши на заголовке вкладки запроса. Выберите пункт контекстного меню Режим SQL .

3. Скопируйте содержимое листинга 6.16 в запрос.

...

Листинг 6.16.

Запрос на установку флага для последующего удаления дубликатов

UPDATE Заказы

SET Сохранить = 1

WHERE [Номер (ID)] IN

(SELECT Min([Номер (ID)]) FROM Заказы GROUP BY Заказы. Дата, Заказы.

Товар, Заказы. Клиент HAVING (((Count(Дата))>1) AND

((Count(Клиент))>1)))

Как видите, запрос является запросом на обновление, но в качестве условия используется упрощенный запрос на выборку, составленный мастером запросов. Запись помечается только в том случае, если ее номер совпадает с минимальным значением номера в ее группе дубликатов.

4. Перейдите на вкладку Конструктор и выберите команду Выполнить . Откроется окно подтверждения операции обновления.

5. Нажмите кнопку Да .

6. Откройте таблицу Заказы (рис. 6.35).

Рис. 6.35. Результат выполнения запроса

Теперь осталось удалить повторяющиеся записи с неустановленным флажком.

1. Откройте мастер запросов, как было описано выше. Выберите пункт Повторяющиеся записи и нажмите кнопку ОК .

2. Добавьте поля Товар ,

Дата , Клиент и нажмите кнопку Далее .

3. Добавьте поле Сохранить (рис. 6.36) и нажмите кнопку Готово .

Рис. 6.36. Окно поиска повторяющихся записей

4. Щелкните правой кнопкой мыши на заголовке вкладки запроса. Выберите команду Конструктор .

5. В бланке запроса в строке Условие отбора для поля Сохранить введите 0.

6. На вкладке Конструктор в группе Тип запроса выберите команду Удаление

.

Результирующий бланк запроса на удаление показан на рис. 6.37.

Рис. 6.37. Результирующий бланк запроса на удаление

Текст запроса на удаление приведен в листинге 6.17.

...

Листинг 6.17.

Запрос на удаление дубликатов

DELETE Заказы. [Дата], Заказы. [Товар], Заказы. [Клиент],

Заказы. [Сохранить]

FROM Заказы

WHERE (((Заказы. [Дата]) In (SELECT [Дата] FROM [Заказы] As Tmp GROUP

BY [Дата],[Товар],[Клиент] HAVING Count(*)>1 And [Товар] =

[Заказы].[Товар] And [Клиент] = [Заказы].[Клиент])) AND

((Заказы. [Сохранить])=0));

Перейти на страницу:

Все книги серии Видеосамоучитель

Похожие книги

C++: базовый курс
C++: базовый курс

В этой книге описаны все основные средства языка С++ - от элементарных понятий до супервозможностей. После рассмотрения основ программирования на C++ (переменных, операторов, инструкций управления, функций, классов и объектов) читатель освоит такие более сложные средства языка, как механизм обработки исключительных ситуаций (исключений), шаблоны, пространства имен, динамическая идентификация типов, стандартная библиотека шаблонов (STL), а также познакомится с расширенным набором ключевых слов, используемым в .NET-программировании. Автор справочника - общепризнанный авторитет в области программирования на языках C и C++, Java и C# - включил в текст своей книги и советы программистам, которые позволят повысить эффективность их работы. Книга рассчитана на широкий круг читателей, желающих изучить язык программирования С++.

Герберт Шилдт

Программирование, программы, базы данных