Access выборка с условием. Условия отбора

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

Условием отбора является выражение, которое состоит из операторов сравнения и сравниваемых операторов. В качестве операторов сравнения и логических операторов могут использоваться следующие: =, <, >, < >, Between, In, Like, And, Or, Not, которые определяют операцию над одним или несколькими операндами.

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

В качестве операндов могут использоваться литералы, константы и идентификаторы (ссылки).

Литералом является значение, воспринимаемое буквально, а не как значение переменной или результат вычисления (например, число, строка, дата).

Константами являются не изменяющиеся значения (например, True, Falls, Да, Нет, Null).

[Имя таблицы]! [Имя поля]

Условия отбора, заданные в одной строке, связываются с помощью логической операции И, а заданные в разных строках - с помощью логической операции ИЛИ. Эти операции могут быть заданы явно в условии отбора с помощью операторов AND и OR соответственно.

Сформировать условие отбора можно с помощью построителя выражения. Перейти в окно Построитель выражений можно, нажав кнопку [Построитель) на панели инструментов или выбрав команду Построить в контекстно-зависимом меню. При этом курсор мыши должен быть установлен в ячейке ввода условия отбора.

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

Для выполнения запроса необходимо на панели инструментов конструктора запросов нажать кнопку [Запуск (!)] или [Представление запроса].

Сортировка данных. Для удобства просмотра можно сортировать записи в таблице в определенной последовательности. Кнопки сортировки на панели инструментов (или команды меню Записи\Сортировка, Сортировка по возрастанию (Сортировка по убыванию) позволяют сортировать столбцы по возрастанию или убыванию. Прежде чем щелкнуть по кнопке сортировки, следует выбрать поля, используемые для сортировки. Современные СУБД (такие, как Access) никогда не сортируют таблицы физически, как это делалось раньше. Средства сортировки данных (а также фильтрации, поиска и замены) реализованы в Access как автоматиче­ски создаваемые запросы. Записи таблицы всегда располагаются в файле базы данных и том порядке, в котором они были добавлены в таблицу.

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

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

1. Выделите в окне базы данных (рис. 17.4) значок запроса Перечень контактов.

Рис. 17.4. Окно базы данных Access

2. Щелкните на кнопке Конструктор .

3. В бланке запроса щелкните на ячейке Условие отбора первого столбца правой кнопкой мыши и выберите в контекстном меню команду Построить . Откроется окно построителя выражений.

4. В левом списке построителя щелкните на папке Операторы .

5. В среднем списке выберите категорию Сравнения .

6. В правом списке дважды щелкните на пункте Between, чтобы добавить этот оператор в ноле формулы.

7. Щелчком выделите в поле формулы первый местозаполнитель «Выражение».

8. В левом списке построителя выражений двойным щелчком откройте папку Функции.

9. Щелкните на папке Встроенные функции, содержащей стандартные функции Access.

10. В среднем списке построителя выражений щелкните на пункте Дата/время .

11. В правом списке дважды щелкните на функции DateValue, чтобы заменить ею местозаполнитель «Выражение».

12. Нажмите два раза клавишу -> , выделив местозаполнитель «stringexpr».

13. Введите текст "1.12.99".

14. Повторяя шаги 7-13, замените второй местозаполнитель «Выражение» на выражение DateValue ("31.12.99").

У вас должна получиться формула Between DateValue ("1.12.99") And DateValue ("31.12.99"). Она проверяет условие нахождения даты в интервале от 1 до 31 декабря 1999 г., то есть отбирает те записи, значение поля Дата которых относится к декабрю 1999 г.

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

15. Щелкните па кнопке ОК . Построенная формула появится в ячейке Условие отбора первого столбца бланка запроса. При выборе записей, относящихся к одному месяцу, точная дата контакта может оказаться несущественной. Совсем выбросить это поле из бланка запроса нельзя, так как оно необходимо для реализации условия отбора. Однако любое поле можно скрыть, то есть не включать в результат запроса.

16. Сбросьте флажок Вывод на экран первого столбца запроса (рис. 17.5).

Рис. 17.5. Скрытие поля в Access

17. Щелчком на кнопке Запуск панели инструментов выполните запрос.

Для ограничения списка записей, получаемых в результате работы запроса, только удовлетворяющими определенным условиям - в бланке запроса предусмотрены поля для условий отбора. Коротко про это было рассказано в "Шаг 22 - Создание запроса на выборку" , теперь настало время разобраться более подробно.

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

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

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

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

Like [ Текст сообщения пользователю ]

В квадратных скобках записывается текст, выводимый в окне ввода параметра , появляющегося на экране, сразу после начала работы соответствующего запроса. Поле ввода принимает набранное на клавиатуре значение и передает его в качестве условия отбора. Далее СУБД просматривает все записи базы данных в поисках совпадения значений и выводит результаты поиска в итоговой таблице.

По умолчанию Access определяет тип вводимых данных как Текстовый. Если же параметр задает условие отбора из столбца с данными типа Числовой или Дата/Время , то необходимо вручную назначить тип данных. Это делается следующим образом:


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

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

Главной целью при создании базы данных является упорядоченная организация информации в таблице, избегая избыточности сведений и достигая логики при их объединении. Естественно, пользователю не интересны все данные, находящиеся в документах и клиента более интересует конкретная информация, нежели её месторасположение. Именно для подобной фильтрации сведений и существуют запросы. Запрос на выборку в Access является одним из самых используемых, он позволяет извлекать необходимую информацию, проводить вычисления, создавать перекрестные ссылки, но без изменения сведений в основных таблицах.

Как создать запрос на выборку в Access с помощью Конструктора

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

На рисунке четко видно, что данные не упорядочены, и просматривать их в таком виде не очень удобно. При формировании запроса этот параметр следует иметь в виду. Для этого в бланке следует использовать строку под названием «Сортировка», с помощью которой можно выстроить список по надбавкам начиная от максимальной, заканчивая минимальным значением.

Помимо этого можно создавать в Access запрос на выборку с условием: для этого в поле «Условия отбора» следует задать необходимый параметр (определенную сумму оклада, просмотреть надбавки только у инженеров проекта и пр).

Условия отбора - это ограничения, накладываемые на запрос или расширенный фильтр для определения записей, с которыми он будет работать. Например, вместо просмотра всех поставщиков компании, можно просмотреть только поставщиков из Литвы. Для этого необходимо указать условие отбора, отсеивающее все записи, кроме тех, у которых в поле «Страна» указано «Литва».Чтобы задать условие отбора для поля в бланке запроса, введите выражение в ячейку Условие отбора для данного поля. В предыдущем примере выражением является «Литва». Могут быть использованы и более сложные выражения, например, «Between 1000 And 5000».Если запрос содержит связанные таблицы, то в значениях, указанных в условиях отбора для полей из связанных таблиц, учитывается регистр знаков. Они должны соответствовать регистру значений в базовой таблице.

Для чего в запросе и отчете можно использовать вычисляемое поле?

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

Что такое параметры объединения в СУБД Microsoft Access, для чего их используют?

Что такое запрос с параметром, и как его можно задать?

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

  1. В меню Справка выберите Примеры баз данных , а затем Пример базы данных Борей . Когда появится Главная кнопочная форма , закройте ее.
  2. Из меню Вид выберите Объекты базы данных , а затем Запросы .
  3. Счета , а затем щелкнитеКонструктор .
  4. Введите следующую команду в ячейку Условия отбора для поля СтранаПолучателя. Обратите внимание, что введенное выражение должно быть заключено в квадратные скобки.

[Обзор счетов страны]

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

Создание запроса с двумя и более параметрами

  1. Запустите Microsoft Access 2002.
  2. В меню Справка выберите Примеры баз данных , а затем Пример базы данных Борей . Когда появится Главная кнопочная форма , закройте ее.
  3. Из меню Вид выберите Объекты базы данных , а затем Запросы .
  4. В окне базы данных щелкните запрос Счета , а затем щелкнитеКонструктор .
  5. Введите следующую команду в ячейке Условия отбора для поля ДатаРазмещения.

Между [ввести дату начала] и [ведите дату окончания]

  1. В меню Запрос выберите команду Выполнить . При запросе даты начала введите 1/1/1997, затем нажмите кнопку OK . При запросе даты окончания введите 1/31/1997, а затем нажмите кнопку OK , чтобы просмотреть результаты запроса. Обратите внимание на то, что запрос возвращает только записи с датой заказа, выпадающей на январь 1997 года.
  2. Закройте запрос без сохранения.

Создание параметров, использующих подстановочные символы

В следующем примере показывается создание параметров, использующих оператор LIKE и подстановочный символ (*) .

  1. Запустите Microsoft Access 2002.
  2. В меню Справка выберите Примеры баз данных , а затем Пример базы данных Борей . Когда появится Главная кнопочная форма , закройте ее.
  3. Из меню Вид выберите Объекты базы данных , а затем Запросы .
  4. В окне базы данных щелкните запрос Счета , а затем щелкнитеКонструктор .
  5. Введите следующую команду в ячейке Условия отбора для поля Марка:

LIKE "*" & [Введите продукты, содержащие выражение] & "*"

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

Какие групповые операции можно использовать в СУБД MS Access при создании запросов с групповыми операциями? Опишите назначение каждой из них.