Знакомство с запросами

Запросы упрощают просмотр, добавление, удаление или изменение данных в базе данных Access. Среди других целей использования запросов можно отметить:

  • быстрый поиск определенных данных путем фильтрации с применением определенных критериев (условий);
  • вычисление или сведение данных;
  • автоматизированное управление данными, например регулярный просмотр актуальных данных.

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

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



Запросы как средство поиска данных и работы с ними

В хорошо структурированной базе данных сведения, которые требуется представить с использованием формы или отчета, зачастую хранятся в разных таблицах. Запрос может извлечь информацию из разных таблиц и собрать ее для отображения в виде формы или отчета. Запрос может представлять собой обращение к данным для получения информации из базы данных или выполнения действий с данными. Запрос можно использовать для получения ответа на простой вопрос, выполнения расчетов, объединения данных из разных таблиц, а также для добавления, изменения или удаления данных в таблице. Это очень гибкий инструмент: существует много типов запросов, и каждый тип создается с учетом задачи.

Основные типы запросов Использование
На выборку Получение данных из таблицы и выполнение вычислений.
На изменение Добавление, изменение или удаление данных. Для каждой задачи существует специальный тип запроса на изменение. Запросы на изменение недоступны в веб-приложениях Access.

К началу страницы К началу страницы

Создание запроса на выборку

Запрос на выборку позволяет просматривать данные только из определенных полей таблицы или из нескольких таблиц одновременно, или же находить данные, которые соответствуют определенным условиям. Дополнительные сведения вы найдете в статье Создание запроса на выборку.

Просмотр данных из выбранных полей

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

  1. Откройте базу данных и на вкладке Создание нажмите кнопку Конструктор запросов.
  2. В диалоговом окне Добавление таблицы на вкладке Таблицы дважды щелкните таблицу Товары, затем закройте диалоговое окно.
  3. Допустим, в таблице "Товары" содержатся поля "Наименование товара" и "Цена по прейскуранту". Дважды щелкните элементы Наименование товара и Цена по прейскуранту, чтобы добавить эти поля в бланк (Бланк запроса: Бланк, предназначенный для определения запроса или фильтра в режиме конструктора запроса или в окне расширенного фильтра. В предыдущих версиях использовался термин бланк запроса по образцу (QBE).) запроса.
  4. На вкладке Конструктор нажмите кнопку Выполнить. Запрос выполнится, и отобразится список товаров и цен на них.

К началу страницы К началу страницы

Одновременный просмотр данных из нескольких связанных таблиц

Рассмотрим пример базы данных магазина пищевых продуктов, в которой требуется просмотреть заказы, полученные от клиентов из определенного города. Допустим, данные о заказах и данные о клиентах хранятся в двух таблицах под названием "Заказчики" и "Заказы" соответственно. Если в каждой таблице имеется поле "Код заказчика", которое является основой отношения "один-ко-многим" (Отношение «один-ко-многим»: Объединение двух таблиц, в котором значению ключа каждой записи в главной таблице соответствует значение в связанном поле или полях в нескольких записях подчиненной таблицы.) между этими двумя таблицами, вы можете создать запрос, который возвратит сведения о заказах клиентов, живущих в определенном городе, например в Тюмени, используя следующую процедуру.

  1. Откройте базу данных. На вкладке Создание в группе Запросы нажмите кнопку Конструктор запросов.
  2. В диалоговом окне Добавление таблицы на вкладке Таблицы дважды щелкните элементы Заказчики и Заказы.
  3. Закройте диалоговое окно Добавление таблицы. Обратите внимание на линию (называемую соединением), которая соединяет поле "Код" в таблице "Заказчики" с полем "Код заказчика" в таблице "Заказы". Эта линия отображает связь между двумя таблицами.
  4. В таблице "Клиенты" дважды щелкните элементы Организация и Город, чтобы добавить эти поля в бланк запроса.
  5. В бланке запроса в столбце Город снимите флажок в строке Показать.
  6. В строке Условие отбора столбца Город введите Тюмень.

Если снять флажок Показать, в результатах запроса не будет отображаться город, а слово Тюмень в строке Условие отбора означает, что требуется просмотреть только те записи, для которых в поле "Город" указано значение "Тюмень". В этом случае запрос возвращает данные только о тех клиентах, которые находятся в Тюмени. Для использования поля в условии отбора показывать его на экране не обязательно.

  1. В таблице "Заказы" дважды щелкните элементы Код заказа и Дата размещения, чтобы добавить эти поля в два следующих столбца в бланке запроса.
  2. На вкладке Конструктор в группе Результаты нажмите кнопку Выполнить. Происходит выполнение запроса и отображается список заказов клиентов из Тюмени.
  3. Нажмите клавиши CTRL+S, чтобы сохранить запрос.

К началу страницы К началу страницы

Создание запроса с параметрами

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

 Примечание.   В веб-приложениях Access запрос с параметрами создать невозможно.

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

  1. В области навигации щелкните правой кнопкой мыши запрос Заказы по городу (созданный в предыдущем разделе) и выберите в контекстном меню пункт Конструктор.
  2. В бланке запроса в строке Условие отбора столбца "Город" удалите слово Тюмень и введите [Для какого города?].

Строка [Для какого города?] является предложением ввести параметр. Квадратные скобки показывают, что при выполнении запроса должно появиться предложение ввести данные, а текст (в данном случае Для какого города?) представляет собой вопрос, отображаемый в предложении.

 Примечание.   В предложении ввести параметр нельзя использовать точку (.) или восклицательный знак (!).

  1. Установите флажок в строке Показать столбца "Город", чтобы в результатах запроса отображался город.
  2. На вкладке Конструктор в группе Результаты нажмите кнопку Выполнить. Запрос предложит ввести значение в строке "Город".
  3. Введите слово Москва и нажмите клавишу ВВОД, чтобы увидеть заказы для клиентов в Москве.

Но что делать, если значения, которые можно указать, неизвестны? В приглашении на ввод можно использовать подстановочные знаки.

  1. На вкладке Главная в группе Представления нажмите кнопку Представление и выберите пункт Конструктор.
  2. В бланке запроса в строке Условие отбора столбца Город введите Like [Для какого города?]&"*".

В этом предложении ввести параметр ключевое слово Like, амперсанд (&) и звездочка (*), заключенная в кавычки, позволяют ввести сочетание знаков, включая подстановочные знаки, для получения разных результатов. Например, если пользователь вводит *, запрос возвращает все города; если пользователь вводит М, запрос возвращает все города, начинающиеся на букву "М"; если пользователь вводит *с*, запрос возвращает все города, в названиях которых имеется буква "с".

  1. На вкладке Конструктор в группе Результаты нажмите кнопку Выполнить, и в строке приглашения запроса введите Создать и нажмите клавишу ВВОД.

В результате выполнения запроса будет отображен список заказов от клиентов из Москвы.

Указание типов данных для параметра

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

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

Чтобы указать тип данных для параметра в запросе, выполните процедуру, описанную ниже.

  1. Когда запрос открыт в конструкторе, на вкладке Конструктор в группе Показать или скрыть нажмите кнопку Параметры.
  2. В диалоговом окне Параметры запроса в столбце Параметр введите текст запроса на ввод значения для каждого параметра, для которого требуется указать тип данных. Убедитесь, что каждый из параметров соответствует запросу, который используется в строке Условие отбора в бланке запроса.
  3. В столбце Тип данных выберите тип данных для каждого параметра.

Узнайте больше об использовании параметров для ввода данных при запуске запроса.

Создание итогового запроса

Строка "Итог" в таблице очень удобна, но для ответа на более сложные вопросы используется запрос итоговых значений. Такой запрос представляет собой запрос на выборку, позволяющий группировать данные и составлять сводку данных, например когда требуется просмотреть итоги продаж каждого товара. В запросе итоговых значений можно использовать статистическую функцию Sum для просмотра итогов продаж каждого товара.

 Примечание.    В веб-приложениях Access статистические функции не работают.

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

  1. На вкладке Главная нажмите кнопку Режим и выберите Конструктор.

Запрос "Промежуточные суммы для товаров" будет открыт в конструкторе.

  1. На вкладке Конструктор в группе Скрыть/Отобразить выберите команду Итоги.

В бланке запроса отобразится строка Итоги.

 Примечание.    Несмотря на схожие названия, строка Итоги в бланке и строка Итог в таблице — не одно и то же.

  • С помощью строки Итоги в бланке можно группировать данные по значениям полей.
  • Строку Итог из таблицы можно добавить в результаты запроса итоговых значений.
  • При использовании строки Итоги в бланке необходимо выбрать статистическую функцию для каждого поля. Если выполнять вычисления с полем не требуется, можно сгруппировать данные по этому полю.
  1. Во втором столбце бланка в строке Итог выберите в раскрывающемся списке вариант Sum.
  2. На вкладке Конструктор в группе Результаты нажмите кнопку Выполнить. Происходит выполнение запроса, а затем отображается список товаров с промежуточными суммами.
  3. Нажмите клавиши CTRL+S, чтобы сохранить запрос. Оставьте запрос открытым.

Дополнительные сведения вы можете прочитать в статье Суммирование значений в таблице с помощью строки "Итого".

К началу страницы К началу страницы

Выполнение расчетов на основе данных

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

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

  1. На вкладке Создание нажмите кнопку Конструктор запросов.
  2. В диалоговом окне Добавление таблицы на вкладке Таблицы дважды щелкните Сведения о заказе.
  3. Закройте диалоговое окно Добавление таблицы.
  4. В таблице "Сведения о заказе" дважды щелкните Код товара, чтобы добавить это поле в первый столбец бланка запроса.
  5. Во втором столбце бланка щелкните правой кнопкой мыши строку Поле, а затем выберите в контекстном меню команду Область ввода.
  6. В диалоговом окне Область ввода введите или вставьте следующее выражение: Всего: ([Количество]*[Цена за единицу])-([Количество]*[Цена за единицу]*[Скидка])
  7. Нажмите кнопку ОК.
  8. На вкладке Конструктор нажмите кнопку Выполнить. Происходит выполнение запроса, а затем отображается список товаров с промежуточными суммами для каждого заказа.
  9. Нажмите клавиши CTRL+S, чтобы сохранить запрос, и назовите его Промежуточные суммы для товаров.

Также вы можете ознакомиться со статьей Суммирование значений в таблице с помощью строки "Итого".

К началу страницы К началу страницы

Просмотр сводных данных и статистических показателей

При использовании таблиц для записи операций или хранения постоянно встречающихся числовых данных удобно иметь возможность просмотреть статистические показатели для этих данных, например суммарные или средние значения. В Access в таблицу (Объект в режиме таблицы: Данные из таблицы, формы, запроса, представления или хранимой процедуры, отображаемые в формате строк и столбцов.) можно добавлять итоговую строку. Итоговая строка — это строка внизу таблицы, которая отображает итоговое или другое статистическое значение.

  1. Выполните запрос "Промежуточные суммы для товаров" и оставьте результаты открытыми в режиме таблицы (Режим таблицы: Представление, в котором данные из таблицы, формы, запроса, представления или хранимой процедуры отображаются в формате строк и столбцов. В режиме таблицы поддерживается изменение значений полей, добавление или удаление данных и поиск данных.).
  2. На вкладке Главная щелкните Итоги. В нижней части таблицы появится новая строка со словом Итог в первом столбце.
  3. Щелкните ячейку в последней строке с именем Итог.
  4. Щелкните стрелку для просмотра доступных статистических функций. Поскольку в столбце содержатся текстовые данные, предлагается только два варианта: Нет и Количество.
  5. Выберите Количество. Содержимое ячейки изменится с Итог на число значений в столбце.
  6. Щелкните соседнюю ячейку (второй столбец). Обратите внимание на стрелку, которая появилась в ячейке.
  7. Щелкните стрелку и выберите Sum. В поле будет отображаться сумма значений в столбце.
  8. Оставьте запрос открытым в режиме таблицы.

К началу страницы К началу страницы

Создание перекрестного запроса

Пусть теперь необходимо просмотреть промежуточные суммы для товаров, а также статистические показатели по месяцам, т. е. в каждой строке должны отображаться промежуточные суммы для товара, а в каждом столбце — промежуточные суммы за месяц. Для вывода промежуточных сумм для товара и промежуточных сумм за месяц используйте перекрестный запрос (Перекрестный запрос: Запрос, в котором подсчитывается сумма, среднее, число значений или выполняются другие статистические расчеты, после чего результаты группируются в виде таблицы по двум наборам данных, один из которых определяет заголовки столбцов, а другой заголовки строк.).

 Примечание.   В веб-приложении Access перекрестный запрос не используется.

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

  1. На вкладке Главная в группе Представления нажмите кнопку Представление и выберите пункт Конструктор.
  2. В группе Настройка запроса щелкните элемент Добавление таблицы.
  3. В диалоговом окне Добавление таблицы дважды щелкните элемент Заказы , а затем нажмите кнопку Закрыть.
  4. На вкладке Конструктор в группе Тип запроса выберите команду Перекрестный. В бланке строка Показать скрыта, а отображается строка Перекрестная таблица.
  1. В третьем столбце бланка щелкните правой кнопкой мыши строку Поле , а затем выберите в контекстном меню пункт Область ввода. Откроется окно Область ввода.
  2. В диалоговом окне Область ввода введите или вставьте следующее выражение: Месяц: "Месяц" & DatePart("м", [Дата заказа])
  3. Нажмите кнопку ОК.
  4. В строке Перекрестная таблица выберите следующие значения в раскрывающемся списке: Заголовки строк для первого столбца, Значение для второго столбца и Заголовки столбцов для третьего.
  5. На вкладке Конструктор в группе Результаты нажмите кнопку Выполнить. Происходит выполнение запроса, а затем отображаются промежуточные суммы, собранные по месяцам.
  6. Нажмите клавиши CTRL+S, чтобы сохранить запрос.

Чтобы узнать подробнее, читайте дальше.

Создание запроса на создание таблицы

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

 Примечание.    В веб-приложениях Access запросы на создание таблицы недоступны.

Например, пусть требуется отправить данные о заказах в Ростове партнеру из Ростова, который использует Access для подготовки отчетов. Вместо отправки всех данных о заказах можно отправить только те данные, которые относятся к заказам в Ростове.

Можно создать запрос на выборку, содержащий данные о заказах в Ростове, а затем использовать этот запрос для создания новой таблицы. Для этого используйте описанную ниже процедуру.

  1. Откройте базу данных из предыдущего примера.

Для выполнения запроса на создание таблицы может потребоваться включить содержимое базы данных.

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

  1. На вкладке Создание в группе Запросы нажмите кнопку Конструктор запросов.
  2. В диалоговом окне Добавление таблицы дважды щелкните Сведения о заказе и Заказы и закройте диалоговое окно Добавление таблицы.
  3. В таблице Заказы дважды щелкните поля Код заказчика и Город получателя, чтобы добавить их в бланк.
  4. В таблице Сведения о заказе дважды щелкните элементы Код заказа, Код товара, Количество, Цена за единицу и Скидка, чтобы добавить эти поля в бланк.
  5. В столбце Город получателя бланка снимите флажок в строке Показать. В строке Условие отбора введите 'Ростов' (включая одинарные кавычки). Проверьте результаты выполнения запроса, прежде чем использовать их для создания таблицы.
  6. На вкладке Конструктор в группе Результаты нажмите кнопку Выполнить.
  7. Нажмите клавиши CTRL+S, чтобы сохранить запрос.
  8. В поле Имя запроса введите Запрос по заказам в Ростове и нажмите кнопку ОК.
  9. На вкладке Главная в группе Представления нажмите кнопку Представление и выберите пункт Конструктор.
  10. На вкладке Конструктор в группе Тип запроса выберите команду Создание таблицы.
  1. В диалоговом окне Создание таблицы в поле Имя таблицы введите Заказы в Ростове и нажмите кнопку ОК.
  2. На вкладке Конструктор в группе Результаты нажмите кнопку Выполнить.
  3. В диалоговом окне подтверждения нажмите кнопку Да, и в области навигации отобразится новая таблица.

 Примечание.   Если таблица с указанным именем уже существует, она удаляется перед выполнением запроса.

Создание запроса на добавление

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

 Примечание.    Запрос на добавление недоступен в веб-приложениях Access.

Предположим, вы создали таблицу для совместной работы с партнером из Ростова, но вспомнили, что этот партнер работает также с клиентами из Казани. Необходимо добавить в эту таблицу строки с данными по Казани. Используя следующую процедуру, можно добавить эти данные в таблицу "Заказы в Ростове".

  1. Откройте "Запрос по заказам в Ростове" в конструкторе.
  2. На вкладке Конструктор в группе Тип запроса выберите команду Добавление.Откроется диалоговое окно Добавление.
  1. В диалоговом окне Добавление щелкните стрелку в поле Имя таблицы и выберите Заказы в Ростове в раскрывающемся списке, а затем нажмите кнопку ОК.
  2. В бланке в строке Условие отбора столбца "Город получателя" удалите значение 'Ростов' и введите 'Казань'.
  3. В строке Добавление записей в таблицу выберите соответствующее поле для каждого столбца.

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

  1. На вкладке Конструктор в группе Результаты нажмите кнопку Выполнить.

 Примечание.    При выполнении запроса, который возвращает большое количество данных, может появится сообщение об ошибке, в котором будет сказано, что отменить запрос не удастся. Попробуйте увеличить ограничение сегмента памяти до 3 МБ, чтобы выполнить запрос до конца.

Создание запроса на обновление

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

 Важно.    Запрос на изменение невозможно отменить. Возможно, перед обновлением следует создать резервные копии всех таблиц, которые будут обновлены запросом на обновление.

 Примечание.    Запрос на обновление недоступен в веб-приложениях Access.

В предыдущем примере вы добавили строки в таблицу "Заказы в Ростове". В ней в поле "Код товара" отображается числовой код товара. Чтобы данные отчетов были более информативными, замените коды товаров их названиям. Используйте следующую процедуру.

  1. Откройте таблицу "Заказы в Ростове" в конструкторе.
  2. В строке "Код товара" измените тип данных Числовой на Текстовый.
  3. Сохраните и закройте таблицу "Заказы в Ростове".
  4. На вкладке Создание в группе Запросы нажмите кнопку Конструктор запросов.
  5. В диалоговом окне Добавление таблицы дважды щелкните Заказы в Ростове и Товары и закройте диалоговое окно Добавление таблицы.
  6. На вкладке Конструктор в группе Тип запроса выберите команду Обновление.
  1. В бланке больше не будут отображаться строки Сортировка и Показать и появится строка Обновление.
  2. В таблице Заказы в Ростове дважды щелкните элемент Код товара, чтобы добавить это поле в бланк.
  3. В бланке в строке Обновление столбца Код товара введите или вставьте следующее: [Товары].[Наименование]

 Совет.    Запрос на обновление можно использовать для удаления значений полей; для этого используется пустая строка ("") или значение NULL в строке Обновление.

  1. В строке Условие отбора введите или вставьте следующее: [Код продукта] Like ([Товары].[Код])
  2. Можно узнать, какие значения будут изменены запросом на обновление, просмотрев запрос в режиме таблицы.
  3. На вкладке Конструктор нажмите кнопку Режим и выберите пункт Режим таблицы. Запрос вернет список кодов товаров, которые будут обновлены.
  4. На вкладке Конструктор нажмите кнопку Выполнить.

При открытии таблицы "Заказы в Ростове" можно будет увидеть, что числовые значения в поле "Код товара" заменены наименованиями из таблицы "Товары". Читайте статью Создание запроса на обновление.

Создание запроса на удаление

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

 Примечание.    Запросы на удаление недоступны в веб-приложениях Access.

Предположим, готовясь отправить таблицу "Заказы в Ростове" из предыдущего примера партнеру в Ростов, вы заметили, что некоторые строки содержат пустые поля. Перед отправкой таблицы их необходимо удалить. Можно открыть таблицу и удалить строки вручную, но если их много и есть четкие условия отбора, удобнее использовать запрос на удаление.

Вы можете использовать запрос для удаления из таблицы "Заказы в Ростове" строк, в которых отсутствует значение "Код заказа". Для этого выполните описанную ниже процедуру.

  1. На вкладке Создание нажмите кнопку Конструктор запросов.
  2. В диалоговом окне Добавление таблицы дважды щелкните Заказы в Ростове, затем закройте диалоговое окно Добавление таблицы.
  3. На вкладке Конструктор в группе Тип запроса выберите команду Удаление. В бланке больше не будут отображаться строки Сортировка, Показать и появится строка Удалить.
  1. В таблице Заказы в Ростове дважды щелкните поле Код заказа , чтобы добавить его в бланк.
  2. В бланке в строке Условие отбора в столбце "Код заказа" введите Is Null.
  3. На вкладке Конструктор в группе Результаты нажмите кнопку Выполнить.

Ознакомьтесь со статьей Создание запроса на удаление.

К началу страницы К началу страницы

 
 
Применимо к:
Access 2013