Использование в условиях отбора подчиненного запроса — КиберПедия 

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

Особенности сооружения опор в сложных условиях: Сооружение ВЛ в районах с суровыми климатическими и тяжелыми геологическими условиями...

Использование в условиях отбора подчиненного запроса

2017-07-25 346
Использование в условиях отбора подчиненного запроса 0.00 из 5.00 0 оценок
Заказать работу

Иногда условие отбора использует значение, которое можно получить в результате выполнения другого запроса, называемого подчиненным. В этом случае можно поступить следующим образом:

1. Создать подчиненный запрос.

2. Перейти в режим SQL и скопировать инструкцию SQL, описывающую подчиненный запрос в буфер обмена.

3. Создать основной запрос и перейти в нужную ячейку строки Условие отбора.

4. Ввести требуемый условный оператор (например, > или <), а затем вставить содержимое буфера обмена, заключив его в круглые скобки.

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

Пример 4.13. Пусть нужно найти студентов, которые не старше студента 9702 группы Иванова, причем известно, что у него в группе нет однофамильцев. В этом случае можно создать подчиненный запрос (см. рис. 4.5) к таблице Студенты, результат которого — дата рождения Иванова (27 марта 72 года).

Рис. 4.5. Подчиненный запрос, дающий дату рождения Иванова

Соответствующая инструкция SQL SELECT выглядит так:

SELECT Студенты.[Дата рождения] FROM Студенты WHERE (((Студенты.Группа)=«9702») AND ((Студенты.Фамилия) =«иванов»));

Она содержит следующую информацию:

• список выбираемых полей (находится после ключевого слова SELECT);

• таблицу, используемую в запросе (указывается в предложении FROM);

• условие отбора записей (указывается в предложении WHERE).

Рис. 4.6.Основной запрос, использующий инструкцию SQL

Эту инструкцию нужно скопировать в буфер обмена и создать еще один запрос к таблице Студенты, содержащий поля Фамилия, Имя и Дата рождения. В поле Дата рождения следует вставить из буфера обмена сохраненную инструкцию SELECT, заключив ее в круглые скобки и поставив в начале условия знак >=.

Условие отбора в поле Дата рождения будет выглядеть так: >= (SELECT Студенты.[Дата рождения] FROM Студенты WHERE (((Студенты.Группа)="9702") AND ((Студенты.Фамилия) ="иванов"));

Рис. 4.7. Итоговый список студентов

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

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

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

Для создания перекрестной таблицы нужно указать:

заголовки строк — одно или несколько полей, значения которых будут использованы в качестве заголовков строк таблицы;

заголовки столбцов — поле, значения которого будут использованы в качестве заголовков столбцов;

значения — числовое поле, значения которого будут использованы для проведения итоговых расчетов;

групповую операцию — групповую функцию, задающую тип итоговых расчетов, или выражение, содержащее групповые функции.

Построение перекрестной таблицы производится примерно по такой схеме. Access производит группировку данных по групповым полям, которые также служат заголовками ее строк и столбцов. Групповая операция проводится над числами, содержащимися в поле значений. Итоговое значение для данной группы помещается в ячейку таблицы, находящуюся на пересечении строк и столбца, названия которых берутся из соответствующих групповых полей. Часть ячеек перекрестной таблицы могут оказаться пустыми (содержащими значение Null). Это обстоятельство необходимо учитывать при создании выражений, включающих поля перекрестной таблицы. Перекрестные запросы обычно используются при создании диаграмм и отчетов. Сохранить перекрестную таблицу в виде обычной таблицы Access с помощью запроса на создание таблицы нельзя.

4.4.1. Мастер Создание п е рекрестных таблиц

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

перекрестного запроса такая таблица/запрос не существует, то следует сначала создать запрос, содержащий всю необходимую информацию, и лишь затем воспользоваться услугами мастера. Рассмотрим работу мастера на следующем примере из БД Книги.

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

Так как нужная информация находится в разных таблицах, создадим запрос, который будет использован мастером в качестве источника данных при построении перекрестной таблицы. Для этого поместим в окно конструктора таблицы Продавцы и Заказы. Access свяжет их по полю Код продавца. В бланк запроса включим поле Код продавца, а также поля Количество и Дата отправки со сведениями о количестве книг в заказе и дате его отправки. Создадим вычисляемое поле Продавец, содержащее фамилии и имена продавцов. Для этого в пустую ячейку строки Поле введем выражение Продавец: [Фамилия] & " " & [Имя]. В поле Дата отправки введем условие отбора заказов, выполненных в 1997 году, и сохраним запрос под именем «Заказы 1997 года».

Рис. 4.8. Бланк запроса с информацией для мастера

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

1. Мастер предлагает указать таблицу или запрос, поля которых будут использованы в создаваемом запросе. В списке запросов нужно найти запрос «Заказы 1997 года» и щелкнуть по кнопке Далее >.

2. Мастер просит указать поля, значения которых будут использованы в качестве заголовков строк (не более трех). Выберем в левом окне, содержащем список доступных полей, поля Код продавца и Продавец, перебросим их с помощью кнопки > в правое окно и перейдем к следующему окну диалога.

3. Мастер просит указать поле, значения которого будут использованы в качестве заголовков столбцов. Выберем поле Дата отправки.

4. Так как выбранное поле имеет тип Дата / Время, то мастер предлагает выбрать временной интервал, с которым нужно сгруппировать данные в этом поле. Выберем Квартал.

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

6. В заключение мастер предлагает дать имя созданному запросу и указать действия после его создания. Назовем запрос «Работа продавцов в 97 году» и выберем просмотр результатов запроса. Созданная таблица имеет лишь один недостаток: столбец с итогами работы каждого продавца за год получил название Итоговое значение Количество. Для его устранения перейдем в режим конструктора и заменим имя соответствующего поля в бланке запроса на имя За год. Затем перейдем в режим таблицы и переместим этот столбец в конец таблицы.

Сохраним все сделанные изменения.

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


Поделиться с друзьями:

Архитектура электронного правительства: Единая архитектура – это методологический подход при создании системы управления государства, который строится...

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

Эмиссия газов от очистных сооружений канализации: В последние годы внимание мирового сообщества сосредоточено на экологических проблемах...

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



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.012 с.