Запрос, отбирающий повторяющиеся записи в таблице "Клиенты"
Иллюстрация 8.28. Запрос, отбирающий повторяющиеся записи в таблице "Клиенты"

-
Данный запрос имеет сложное выражение в строке
Условие отбора
(Criteria) поля "Название":
In (SELECT [Название] FROM [Клиенты] As Tmp GROUP BY [Название],[Адрес] HAVING Count(*)>l And [Адрес] = [Клиенты].[Адрес])
Это выражение включает еще один запрос. Такой запрос называется подчиненным запросом (подробнее о подчиненных запросах см. разд. "Создание подчиненных запросов" в конце данной главы). Чтобы посмотреть, как полностью выглядит инструкция SQL, соответствующая этому запросу, нужно перейти в режим SQL.
Мы рекомендуем при работе с запросами в режиме Конструктора чаще открывать окно
Режим SQL
(SQL View). Изучая, как Access создает инструкции SQL, можно постепенно выучить этот язык. Правда, помните, что в данном случае мы имеем дело с диалектом стандартного языка SQL — Access SQL. Ниже мы расскажем, чем он отличается от стандартного языка SQL (см. разд. "Сравнение ANSI и Jet SQL" данной главы).
Еще один мастер позволяет найти все записи в главной таблице, которые не имеют связанных записей в подчиненной таблице (обратной ситуации быть не должно, если вы правильно установили флажки, обеспечивающие целостность данных) (см. также разд. "Поддержка целостности данных" гл. 2).
Чтобы создать запрос, который покажет всех клиентов, которые не имеют заказов:
-
Раскройте список запросов в окне базы данных и нажмите кнопку
Создать
(New). В диалоговом окне
Новый запрос
(New Query) выберите из списка элемент
Записи без подчиненных
(Find Unmatched Query Wizard). Появится диалоговое окно
Поиск записей, не имеющих подчиненных
(Find Unmatched Query Wizard), аналогичное окну
Поиск повторяющихся записей
(см. рис. 8.27).
-
Выберите из списка таблицу "Клиенты" (Customers).
-
Следуйте указаниям мастера, в результате чего вы получите запрос, который в режиме Конструктора может выглядеть так, как представлено на рис. 8.29.
Иллюстрация 8.29. Запрос для поиска записей, не имеющих подчиненных записей