Запросы ОГЛАВЛЕНИЕ

ЗАПРОСЫ
Предположим, что на крупном предприятии есть огромная база данных Кадры, содержащая подробнейшие сведения о каждом сотруднике. Кроме формальной информации база может содержать и конфиденциальную, например сведения о заработной плате. Вся эта информация хранится в базовых таблицах.
Работать с базой данных Кадры могут разные подразделения предприятия, и всем им нужны разные данные. Не все то, что положено знать службе безопасности предприятия, должно быть доступно главному врачу, и наоборот. Поэтому доступ пользователей к базовым таблицам закрывают.
Для доступа к данным есть другое, гораздо более гибкое и удобное средство - запросы. Для одной и той же таблицы можно создать множество разных запросов, каждый из которых сможет извлекать из таблицы лишь малую часть информации, но именно ту часть, которая в данный момент необходима. У сотрудника бухгалтерии должен быть запрос, который позволит определить сколько дней в году по болезни отсутствовал тот или иной работник, но у него не должно быть запроса, позволяющего узнать, чем он болел и где лечился, а у главного врача такой запрос быть должен.
В результате работы запроса из общей исходной базы формируется результирующая таблица, содержащая часть общей информации, соответствующую запросу.


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

ЗАПРОСЫ НА ВЫБОРКУ
Существует немало различных видов запросов, но самые простые из них и, к тому же, используемые наиболее часто - это запросы на выборку. С них и принято начинать знакомство с созданием запросов.
Цель запроса на выборку состоит в создании результирующей таблицы, в которой отображаются только нужные по условию запроса данные из базовых таблиц.
Как и другие объекты Access, запросы можно создавать автоматически с помощью Мастера или вручную. И, как обычно, на этапе обучения лучше не пользоваться Мастером, чтобы почувствовать работу с запросами "кончиками пальцев".
Для создания запросов к базам данных существует специальный язык запросов. Он называется SQL (Structured Query Language - структурированный язык запросов). К счастью, те, кто пользуются СУБД Access, могут позволить себе не изучать этот язык. Вместо него в Access есть простое средство, которое называется бланком запроса по образцу. С его помощью можно сформировать запрос простыми приемами, перетаскивая элементы запроса между окнами.

ВЫБОР БАЗОВЫХ ТАБЛИЦ ДЛЯ ЗАПРОСА
1. Создание запроса к базе начинается с открытия вкладки Запросы диалогового окна База данных и щелчка на кнопке Создать.
2. В открывшемся диалоговом окне Новый запрос задают ручной режим создания запроса выбором пункта Конструктор.
3. Создание запроса в режиме Конструктора начинают с выбора тех таблиц базы, на которых будет основан запрос.
4. Выбор таблиц выполняют в диалоговом окне Добавление таблицы. В нем отображаются все таблицы, имеющиеся в базе.
5. Выбранные таблицы заносят в верхнюю половину бланка запроса по образцу щелчком на кнопке Добавить.
6. В окне Добавление таблицы обратите внимание на наличие трех вкладок: Таблицы, Запросы, Запросы и таблицы. Они говорят о том, что запрос не обязательно основывать только на таблицах. Если ранее уже был создан запрос, то новый запрос можно основывать и на нем.

ЗАПОЛНЕНИЕ БЛАНКА ЗАПРОСА ПО ОБРАЗЦУ
Бланк запроса по образцу - удивительно изящное и удобное средство создания запросов. Наверное, оно в немалой степени способствует тому успеху, который СУБД Access имеет у потребителей.
1. Бланк запроса по образцу имеет две панели. На верхней панели расположены списки полей тех таблиц, на которых основывается запрос.
2. Строки нижней панели определяют структуру запроса, то есть структуру результирующей таблицы, в которой будут содержаться данные, полученные по результатам запроса.
3. Строку Поле заполняют перетаскиванием названий полей из таблиц в верхней части бланка. Каждому полю будущей результирующей таблицы соответствует один столбец бланка запроса по образцу.
4. Строка Имя таблицы заполняется автоматически при перетаскивании поля.
5. Если щелкнуть на строке Сортировка, появится кнопка раскрывающегося списка, содержащего виды сортировки.Если назначить сортировку по какому-то полю, данные в результирующей таблице будут отсортированы по этому полю.
6. Бывают случаи, когда поле должно

присутствовать в бланке запроса по образцу, но не должно отображаться в результирующей таблице. В этом случае можно запретить его вывод на экран, сбросив соответствующий флажок.
7. Самая интересная строка в бланке запроса по образцу называется Условие отбора. Именно здесь и записывают тот критерий, по которому выбирают записи для включения в результирующую таблицу. По каждому полю можно создать свое условие отбора. В нашем примере назначено одно условие отбора: по стране (США) в таблице Клиенты.
8. Запуск запроса выполняют щелчком меню Вид - Режим таблицы. При запуске образуется результирующая таблица.
9. Чтобы выйти из результирующей таблицы и вернуться к созданию запроса в бланке запроса по образцу, нужно еще раз щелкнуть меню Вид-Конструктор.
Зачем нужен флажок Вывод на экран? Если содержимое поля не надо выводить на экран, то, может быть лучше вообще не включать это поле в бланк запроса по образцу? Случаи, когда присутствие поля в бланке необходимо, обычно связаны с использованием этого поля для сортировки. Но если при этом сведения в данном поле конфиденциальные, то поле скрывают.

ЗАПРОСЫ С ПАРАМЕТРОМ
Выше мы рассмотрели работу запроса, выбирающего клиентов из одной страны - США. Страна была жестко введена в бланк запроса по образцу, и обычный пользователь базы, не имевший отношения к ее созданию, не может изменить эти параметры.
Во многих случаях пользователю надо предоставить возможность выбора того, что он хочет найти в таблицах базы данных. Для этого существует специальный вид запроса - запрос с параметром.
1. Предположим, что в базе данных есть таблица, в которой содержатся все клиенты из всех стран. Наша задача: создать запрос, с помощью которого пользователь может сам определить, клиентов какой страны ему надо просмотреть.


2. Для этой цели служит специальная команда языка SQL, которая выглядит так:
LIKE [...1
В квадратных скобках можно записать любой текст, обращенный к пользователю, например:
LIKE [Введите название страны]
3. Команду LIKE надо поместить в строке Условие отбора и в том поле, по которому производится выбор. В нашем случае это столбец Страна.
4. После запуска запроса открывается диалоговое окно, в котором пользователю предлагается ввести параметр.
5. Если в качестве параметра ввести слово США, то выдается результирующая таблица, содержащая записи клиентов из США.
6. Если в качестве параметра ввести слово Германия, то результирующая таблица будет иной.

ВЫЧИСЛЕНИЯ В ЗАПРОСАХ
Взгляните на таблицу Заказано. В ней есть данные о том, какое количество определенного товара заказано и скидка на товар, но нет поля таких сведений, как, например, на какую сумму каждого товара продано с учетом скидки. Однако такое поле можно создать с помощью запроса.
Поле, содержимое которого является результатом расчета по содержимому других полей, называется вычисляемым полем.
Прежде чем мы научимся создавать и использовать вычисляемые поля, следует обратить внимание на то, что вычисляемое поле существует только в результирующей таблице. В исходных (базовых) таблицах такое поле не создается, и при работе обычного запроса таблицы не изменяются. Не правда ли, это очень разумно? Каждый, кто обращается к базе, может с помощью запросов как угодно манипулировать данными и получать любые результаты, но при этом исходные таблицы остаются неизменно одинаковыми для всех пользователей.
1. Для создания запроса, производящего

вычисления, служит тот же самый бланк запроса по образцу. Разница только в том, что в одном из столбцов вместо имени поля записывают формулу. В формулу входят заключенные в квадратные скобки названия полей, участвующих в расчете, а также знаки математических операций, например так:
Сумма продажи : [Цена] * [Количество] - [Цена] * [Количество] *[Скидка]
2. В узкий столбец непросто записать длинную формулу, но если нажать комбинацию клавиш SHIFT+F2, то открывается вспомогательное диалоговое окно, которое называется Область ввода. В нем можно ввести сколь угодно длинную формулу, а потом щелчком на кнопке ОК перенести ее в бланк запроса по образцу.
3. Если включить отображение вычисляемого поля, результаты расчетов будут выдаваться в результирующей таблице.
4. Ничто не мешает сделать вычисляемое поле полем сортировки, чтобы не только получать новые результаты, но и анализировать их. Посмотрите, как изменяется положение товаров после сортировки по вычисляемому полю.

ИТОГОВЫЕ ЗАПРОСЫ
Запросы позволяют не только отбирать нужную информацию из таблиц и обрабатывать ее путем создания новых (вычисляемых) полей, но и производить так называемые итоговые вычисления:
Примером итогового вычисления может служить сумма всех значений в какой-то группе записей или их среднее значение, хотя кроме суммы и среднего значения существуют и другие итоговые функции.
Поскольку итоговые функции для одной записи не имеют смысла и существуют только для группы записей, то предварительно записи надо сгруппировать по какому-либо признаку.
1. Рассмотрим запрос "Квартальные оборота по товарам"
2. Итоговые запросы создают на основе известного нам бланка запроса по образцу, только теперь в нем появляется дополнительная строка - Группировка.
3. Для введения этой строки в бланк надо

щелкнуть на кнопке Групповые операции (знак суммы) на панели инструментов программы Access.
Далее все происходит очень просто.
4. В тех полях, по которым производится группировка, надо установить (или оставить) функцию Группировка.
5. В тех полях, по которым следует провести итоговое вычисление, надо в строке Группировка раскрыть список и выбрать одну из нескольких итоговых функций.
6. Щелчок на кнопке Вид запускает запрос и выдает результирующую таблицу с необходимыми итоговыми данными.
7. В строке Группировка можно указать лишь одну итоговую функцию. А как быть, если надо найти и сумму, и среднее, и максимальное значение, и еще что-то? Решение простое: одно и то же поле можно включить в бланк запроса по образцу несколько раз.
Попробуйте сделать итоговый запрос на то, какие заказы и на какую сумму в день выполнения заказа обработал сотрудник Новиков за 1995 год.

Запросы КОНТРОЛЬНЫЕ ВОПРОСЫ

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

Запуск
Контрольно-тренировочное тестирование Начать тестирование
Тренировочное тестирование Начать тестирование

ОГЛАВЛЕНИЕ

©2001 Все права сохранены WebDesign
Hosted by uCoz