Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Гурин_работа с базами.pdf
Скачиваний:
86
Добавлен:
26.03.2015
Размер:
961 Кб
Скачать
☆

40

таблице запроса, которая появится на экране в результате его выполнения. Фактически этой операцией мы вводим заголовок поля в таблице, оставляя имя поля прежним, т.е., хотя поле, например, «Количество» теперь в таблице запроса будет иметь заголовок «Суммарное количество», его имя в вышеприведенной формуле для расчета остается прежним – «Количество». Заметим, что эту же операцию переименования поля можно проделать, вызвав контекстное меню щелчком правой кнопки мыши по полю и задав в перечне свойств поля соответствующее значение свойству Под-

пись.

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

•для поля «Сотрудник» функцию Группировка,

•для поля «Товар» функцию Группировка,

•для поля «Количество» функцию Sum,

•для поля «Цена» функцию Avg, которая рассчитает среднее значение цены на данный товар,

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

Выполните сформированный запрос. Сохраните созданный запрос под именем «Стоимость контрактов».

4.6. Перекрестные запросы

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

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

41

Рис. 23. Окно создания перекрестного запроса

Рис. 24. Результат выполнения перекрестного запроса

Например, пусть в таблице «Контракты» необходимо разгруппировать заключенные с клиентами контракты по типу товаров. Для организации такого запроса необходимо выбрать в QBE-область поля: «Клиент», «Товар», «Количество» и выполнить команду Запрос/Перекрестный, ко-

торая добавит в QBE-бланк строки Групповая операция и Перекрестная таблица (см. рис. 23). Затем в строке QBE-бланка Групповая операция для полей «Клиент» и «Товар» задать функцию Группировка, а для поля «Количество» – функцию Sum. В строке Перекрестная таблица задать для поля «Клиент» функцию Заголовки строк, для поля «Товар» – функцию Заголовки столбцов и для поля «Количество» – функцию Значение. В результате выполнения данного запроса должна появиться таблица вида, представленного на рис. 24.

Выполните созданный запрос и сохраните его под именем «Клиент- товар-количество».

42

4.7. Запрос в Режиме SQL

В Access запросы представляются в трех режимах: Конструктор, Режим таблицы и Режим SQL. Ранее уже упоминалось, что любой запрос является программой, написанной на языке структурированных запросов SQL. Этот язык является общепринятым стандартным языком запросов в реляционных БД. Он был разработан фирмой IBM для реляционной модели данных, предложенной Э.Ф. Коддом. Фактически программа на SQL представляет собой некоторую фразу-запрос к выборке данных на английском языке, записанную в определенной структуре, которую затем СУБД преобразует в требуемый результат. В данном пособии SQL не будет рассматриваться подробно, однако, вообще говоря, знание основных особенностей этого языка поможет лучше понять процесс выполнения запроса, а также при необходимости отредактировать его или даже построить более эффективный запрос.

Рис. 25. Режим SQL для запроса на просмотр с сортировкой

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

Простых запросов либо Конструктора.

Например, после перехода к режиму SQL ранее сформированный мастером Простых запросов запрос «Клиенты» будет выглядеть так, как это показано на рис. 25. Как видно, текст SQL программы запроса достаточно прост и вполне доступен для понимания с первого раза. В первой строке после оператора SELECT (выбрать, англ.) указываются поля таблицы «Клиенты», которые выбраны для запроса. Во второй строке после оператора FROM (из, англ.) указывается таблица, из которой эти поля выбираются, а в третьей строке после оператора ORDER BY (упорядочить по, англ.) указано поле, по которому проводится сортировка результирующих записей.

Запрос с заданным критерием отбора записей «Контракты после 1 марта», в котором производится выборка по условию, имеет программу с аналогичной структурой. Однако в программу запроса (см. рис. 26) добав-

43

лена строка с условием, которое сформировано после оператора WHERE (где, англ.) и по которому из таблицы «Контракты» выбираются все записи с контрактами, заключенными после 1 марта 2001 года.

При задании запроса с группировкой записей и вычислением итоговых значений используется оператор группировки GROUP BY (группировать по, англ.) и соответствующая вычислительная операция Sum по числовым полям для сгруппированных данных (см. рис. 27).

Рис. 26. Режим SQL для запроса с условием на выборку записей\

Рис. 27. Режим SQL для запроса с группировкой и вычислением

Если запрос строится на основе полей из нескольких связанных между собой таблиц, то это, естественно, усложняет программу, в которой нужно обеспечить определенное согласование отбираемых для запроса данных. В частности, в более сложном запросе «Товары Запрос», основанном на трех взаимосвязанных таблицах «Товары», «Контракты» и «Сотрудники», появляются операторы INNER JOIN (внутреннее объединение, англ.) для внутреннего объединения таблиц по связующему их полю и DISTINCTROW (отличающаяся запись, англ.) для ограничения выбираемых данных однозначными записями (см. рис. 28).

Перекрестный запрос всегда преобразует таблицу запроса к форме электронных таблиц Excel, поэтому первым оператором в таком запросе является оператор TRANSFORM (преобразовать, англ.), который определяет вычисляемые значения в ячейках результирующей таблицы запроса. После операторов выбора SELECT … FROM и оператора группировки GROUP BY следует оператор PIVOT (опора, англ.), где указывается поле,

44

которое должно использоваться при создании заголовков столбцов для набора записей перекрестного запроса.

Рис. 28. Запрос в Режиме SQL на основе связанных таблиц

Рис. 29. Перекрестный запрос в Режиме SQL

Перечислим в заключение назначение некоторых основных операторов языка SQL:

SELECT – выбирает поля из таблиц по запросу;

FROM – указывает таблицу, из которой были выбраны поля; WHERE – создает условие на выборку данных в записях; ORDER BY – сортирует записи в заданном порядке;

GROUP BY – группирует совпадающие записи при выполнении итоговых запросов;

INNER JOIN – объединяет таблицы по связующим полям; DISTINCTROW – исключает из результирующего набора повторяю-

щиеся записи;

TRANSFORM – вычисляет выражения в перекрестных запросах; PIVOT – определяет заголовки столбцов в таблице перекрестного

запроса.

Просмотрите и проанализируйте в Режиме SQL другие созданные с помощью Конструктора либо Мастера запросы.

Отредактируйте программы запросов на основе проанализированных выше свойств операторов языка SQL (предварительно скопируйте в буфер обмена SQL-программу запроса, чтобы была возможность вернуть-