Вход/Регистрация
Access 2002. Самоучитель
вернуться

Дубнов Павел Юрьевич

Шрифт:

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

Согласно синтаксическим правилам языка SQL перед именем каждого поля указывается имя таблицы, которой принадлежит это поле. Названия таблицы и поля разделены точкой, а каждая пара значений (например, Страны. Код) отделяется от следующей пары запятой.

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

Ключевой параметр WITH OWNER ACCESS OPTION не является обязательным. Он позволяет пользователям, которым обычно не разрешается работать с базовыми таблицами, выполнить запрос и просмотреть его результаты – поля, включенные в запрос. Таким образом, пользователь получает право ограниченного доступа к данным таблицы.

Запросы с использованием групповых операций

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

Еще один пример простого запроса: необходимо получить справку о том, сколько человек погибло в результате различных аварий за два с лишним года – с начала 1997 по апрель 2000 года. Полная информация по этому вопросу аккумулирована в таблице Es_oper. В каждой записи о конкретной аварии сведения о жертвах содержатся в поле В том числе погибло.

Запрос, построенный таким образом, востребует данные только из одной таблицы – Es_oper.

Чтобы сконструировать этот запрос, сначала, как и в предыдущем примере, откройте окно базы данных. Затем задайте команды Создание запроса в режиме конструктора Показать таблицу (рис. 11.3). В появившемся окне выберите таблицу Es_oper. На экране возникнет окно конструктора запроса (см. рис. 11.9). В макете таблицы Es_oper на этом рисунке найдите интересующее вас поле В том числе погибло и щелкните по нему дважды.

Рис. 11.9

Итак, поле В том числе погибло зафиксировано в бланке запроса. Теперь подумаем, как получить сумму значений этого поля по всем записям. Суммирование – стандартная операция, и пользователю не надо специально организовывать сложение (хотя при большом желании вы можете сделать это). Для этого можно использовать опцию Групповые операции. Щелкните по кнопке

на панели инструментов базы данных, и в бланке запроса появится дополнительная строка Групповая операция (обратите внимание, что на рис. 11.4 ее нет). Если вы теперь щелкнете в этой строке на пересечении с полем В том числе погибло, то появится стрелка прокрутки, которая позволяет открыть список групповых операций:

• Группировка – команда, включаемая в инструкцию SQL. Эта опция позволяет добиться того же результата, что и выполнение следующих действий: создание итогового запроса в окне запроса, а затем выбор для соответствующего поля групповой операции в строке Групповая операция (см. рис. 11.9);

• Sum – функция, выполняющая суммирование значений в поле;

• Avg – операция, позволяющая вычислить среднее арифметическое набора чисел, которые содержатся в указанном поле запроса;

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

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

• Count – операция, с помощью которой вычисляется количество записей, возвращаемых запросом;

• StDev – функция, которая возвращает значение среднеквадратичного отклонения. Последнее вычисляется исходя из набора значений, содержащихся в указанном поле запроса;

• Var – функция, возвращающая значение дисперсии. Дисперсия вычисляется в соответствии с теми значениями, которые содержатся в указанном поле запроса;

• First – операция, возвращающая первое число из набора значений, которые содержатся в указанном поле запроса;

• Last – операция, возвращающая последнее число из набора значений, которые содержатся в указанном поле запроса;

• Выражение – функция, возвращающая результат выражения, которое содержится в указанном поле запроса;

• Условие – функция, которая определяет, какие записи из таблиц, перечисленных в предложении FROM, следует включить в результат выполнения инструкций SELECT, UPDATE или DELETE.

Из приведенного списка вы, конечно, выберете Sum, так как вас интересует (если вы еще об этом не забыли) суммарное количество погибших. Активизировав соответствующую опцию (см. рис. 11.9), закройте окно конструктора запроса и сохраните изменения (см. рис. 11.6). Теперь следует назвать новый запрос или согласиться с именем, предлагаемым по умолчанию (это, конечно же, Запрос с порядковым номером). Под полученным именем новый запрос будет «прописан» в окне базы данных. Если вас такой вариант не устраивает, можете воспользоваться кнопкой

Если вы теперь откроете этот запрос, то получите ответ, представленный на рис. 11.10. Здесь указано имя функции (Sum), имя активного поля (В том числе погибло) и количество погибших за весь период (5531 человек).

Рис. 11.10

Уже показанным раньше способом перейдем к инструкции SQL (см. рис. 11.11).

Рис. 11.11

По сравнению с инструкцией SQL, изображенной на рис. 11.8, здесь появился элемент – AS [Sum В том числе погибло]. Смысл его состоит в следующем. В Microsoft Access имена полей (здесь – поле В том числе погибло), указанные в режиме SQL окна запроса, используются в режиме таблицы в качестве заголовков столбцов. Чтобы вывести в режиме таблицы другие имена столбцов (в нашем примере – Sum – В том числе погибло) , следует включить в инструкцию SQL зарезервированное слово AS. Это бывает необходимо, если вы используете статистические функции в запросах, которые возвращают слишком сложные или повторяющиеся имена полей. Таким образом, рядом с исходным полем В том числе погибло появляется новое поле суммы – Sum – В том числе погибло, поэтому и требуется добавить ключевое слово AS. Что касается квадратных скобок, в которые заключены имена полей в инструкции SQL, то здесь вы имеете дело со спецификой синтаксиса Access. Если имя поля не содержит пробелов, Access автоматически помещает название в квадратные скобки, а если содержит, то может и не поставить их. Поэтому советуем на всякий случай всегда заключать имена полей в квадратные скобки.

Запросы с дополнительными условиями

Теперь несколько усложним задачу: введем в запрос критерии отбора. Поначалу они будут довольно простыми, но постепенно станут усложняться. Как правило, необходимость в запросах подобного типа возникает эпизодически – при анализе каких-либо отдельных аспектов рассматриваемой чрезвычайной ситуации.

Запросы, в которых критерием является полное значение поля

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

Рис. 11.12

В данном примере нас будут интересовать три поля: Код страны, Название_фирмы_ и Адрес. Введите их названия в бланк запроса, как вы уже делали это раньше. Чтобы отобрать именно российские фирмы, воспользуйтесь новым элементом – критерием. Он вводится в строке бланка, которая так и называется – Условие отбора. В нашем случае критерий следует указать в единственном поле таблицы Фирмы, связанном со страной, – Код страны. Здесь вы вводите условный код России – 06 (см. рис. 11.12).

Ясно, что это не самый удобный путь: придется или запоминать коды разных стран, или тратить время на поиски в специальном справочнике. Проще будет расширить запрос, включив в него две или более таблицы. Мы обсудим такой вариант чуть позже, а сейчас обратим внимание на один существенный момент. Как вы заметили, в поле бланка запроса Условие отбора значение кода заключено в прямые кавычки – «06». Когда вы задаете в Access какое-либо символьное выражение в качестве фильтра, условия, критерия и т. д. и приводите это значение полностью, Access 2002 поставит кавычки автоматически.

Заполнив бланк запроса, закройте окно конструктора. Когда вы подтвердите выполненные действия (см. рис. 11.6), запрос будет включен во вкладку Запросы окна базы данных. Если вы теперь откроете этот запрос, на экране появится таблица, показанная на рис. 11.13. В ней перечислены фирмы, отобранные по признаку страны.

Рис. 11.13

Теперь посмотрим, как выглядит инструкция SQL для нашего запроса (см. рис. 11.14).

Рис. 11.14

В предыдущих примерах вы переходили в окно SQL из окна конструктора запроса. Здесь такая возможность сохраняется, но проделать этот переход так же просто и из результирующей таблицы вида (см. рис. 11.13). Сначала щелкните правой кнопкой мыши в строке имени указанной таблицы. Затем в появившемся контекстном меню выберите, как и раньше, опцию Режим SQL.

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

Запросы, в которых критерием является неполное значение поля

Теперь усложним условие, которое нужно задать в запросе. В таблице Fiie1 собрана информация обо всех авариях, случившихся в 1994 году. Предположим, нас интересуют лишь аварии на нефтепроводах. Конечно, можно отобрать те происшествия, что по классификации БД отнесены к группе Аварии на магистральных нефтепроводах (поле Наименование ЧС). Однако нам нужны данные об авариях на всех видах нефтепроводов, а не только на магистральных.

Есть другой вариант: отбирать записи, у которых в поле Характеристика ЧЭС упоминаются нефтепроводы. Но это слово может находиться в различном контексте, использоваться в разных падежах и т. д. В качестве критерия в запросе следует задать корневую часть слова, которая остается неизменной: в данном случае «нефтепровод». (Если бы нас интересовали, например, аварии при добыче и транспортировке нефти, то пришлось бы учитывать понятия «нефтепромысел», «нефтедобыча» и др. Тогда в запросе фигурировал бы критерий «нефте».) Итак, внесем слово «нефтепровод» в знакомую строку бланка запроса – Условие отбора (см. рис. 11.15). Обратите внимание на синтаксическое оформление критерия. В отличие от предыдущего примера здесь использован фрагмент текста, то есть часть поля. Поэтому нам понадобятся, кроме прямых кавычек, еще и звездочки. Критерий будет оформлен так: «*нефтепровод*» (см. рис. 11.15). К символьной последовательности, помещенной в звездочки, Access 2002 всегда добавляет слово Подобно. Таким образом задается команда на поиск записей, содержащих подобную подстроку. Как уже говорилось, кавычки вы можете и не ставить: Access 2002 не забудет сделать это за вас. А вот звездочки – исключительно ваша забота. Если корневая часть слова, которая используется в качестве критерия, находится на левой или правой границе поля, то с этой стороны звездочку можно опустить. Но, как правило, вам неизвестно точное расположение критерия. Поэтому звездочки лучше ставить всегда.

Рис. 11.15

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

Дайте команду на выполнение созданного запроса (как это сделать, уже обсуждалось). В результате вы получите перечень аварий на нефтепроводах (см. рис. 11.16).

Рис. 11.16

Теперь посмотрим, как будет выглядеть в данном примере инструкция SQL, приведенная на рис. 11.17.

Рис. 11.17

Как видите, по своей структуре, то есть по составу ключевых параметров, эта инструкция совпадает с предыдущей. Разница лишь в том, что предложение с ключевым словом SELECT включает не одно, как в предшествующем случае, а все поля записи. Синтаксические правила записи каждого отдельного поля, естественно, не изменяются.

Разумеется, подобные критерии можно вводить одновременно в разные поля бланка запроса. В нашем случае используем логическую схему «И»: компонентами составного критерия будут отдельные критерии для различных полей записи базы данных. Поясним это на примере, который представляет собой расширенный вариант только что рассмотренной ситуации.

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

Сформулируем новый запрос так: «По информации, собранной в таблице Fiie1 , выдать справку об авариях на нефтепроводах Тюменской области».

Окно конструктора для этого запроса показано на рис. 11.18. Как видите, здесь заданы два критерия: прежний – "*нефтепровод*", дополнительный – "Тюменская область". (Слово «область» можно было и не вводить: название Тюменская уникально и само по себе служит достаточным критерием.) Новый критерий тоже можно заключить в звездочки. Результатом выполнения запроса будет таблица, выведенная на рис. 11.19.

Рис. 11.18

  • Читать дальше
  • 1
  • ...
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: