Запрос 2. Запрос с параметром. Вывести все сведения о заданных деталях. Имя детали вводить в диалоге. Запрос будет похож на предыдущий запрос, но в условии отбора вместо слова гайка нужно в квадратных скобках написать текст, который не был бы именем поля, но давал бы пользователю подсказку, что ему вводить:
Рисунок 28 – Однотабличная выборка с параметром
При выполнении запроса с параметром откроется окно для ввода имени детали. Вводимое имя не надо заключать в кавычки (как на рисунке 29):
Рисунок 29 – Ввод значения параметра
Запрос 3. Многотабличный булевский запрос на выборку данных. Вывести все сведения о поставщиках, поставляющих детали заданного наименования И проживающих в Москве:
Рисунок 30 – Многотабличный булевский запрос (операция И) с параметром
Соответствующий SQL-запрос:
SELECT Post.*, Det.DIM
FROM Post INNER JOIN (Det INNER JOIN PD ON Det.DN = PD.DN) ON Post.PN = PD.PN
WHERE (((Post.GOR)="Москва") AND ((Det.DIM)=[Введите наимнование детали]));
Запрос 4. Многотабличный булевский запрос на выборку данных. Вывести все сведения о поставщиках, поставляющих гайки ИЛИ проживающих в заданном городе.
Рисунок 31 – Многотабличный булевский запрос (операция «ИЛИ») с параметром
Соответствующий SQL-запрос:
SELECT Post.*, Det.DIM, PD.KOL
FROM Post INNER JOIN (Det INNER JOIN PD ON Det.DN = PD.DN) ON Post.PN = PD.PN
WHERE (((Post.GOR)=[Введите город])) OR (((Det.DIM)="гайка"));
Следует отметить, что при конструировании многотабличного QBE-запроса обязательно нужно выносить в верхнюю часть бланка связанные таблицы. Если Вы выносите в запрос поля из несвязанных таблиц (как показано на рисунке 32), то нужно обязательно добавить еще хотя бы одну таблицу, чтобы все таблицы оказались связанными (несмотря на то, то поля добавляемой таблицы в запросе могут не использоваться). Если этого не сделать, то в ответе можно получить очень большое количество записей (декартово произведение).
Рисунок 32 – Так делать нельзя
Запросы на выборку – это самые простые и часто встречающиеся запросы. Для создания других типов запросов рекомендуется действовать по следующей схеме:
· сначала создать запрос на выборку данных;
· затем созданный запрос на выборку преобразовать в запрос другого типа.
Запрос 5. Запрос на выборку с вычисляемым полем.
Можно запрос на выборку реализовать так, то в ответе появится поле, которого нет в таблице, и значение которого вычисляется на основе данных, содержащихся в таблице. Такое поле называют вычисляемым. В качестве примера рассмотрим запрос на выборку данных из таблицы Det, который выводит информацию о деталях, включая старую цену (поле CENA) и новую цену деталей, увеличенную на 10%. Другими словами, все детали подорожали на 10%. В таблице Det никаких изменений делать не надо.
QBE-запрос в режиме конструктора показан на рисунке 33.
Рисунок 33 – Запрос с вычисляемым полем
В запросе использованы псевдонимы: старая цена и новая цена. Поле с новой ценой – вычисляемое. Для того чтобы новая цена отображалась в денежном формате, нужно выделить поле с новой ценой и открыть из к.з. меню окно свойств, в котором для свойства Формат поля из списка выбрать Денежный.
Соответствующий SQL-запрос:
SELECT Det.DIM, Det.CENA AS [старая цена],
[Det]![CENA]*1.1 AS [новая цена]
FROM Det;
Запрос 6. Запрос на выборку с группировкой данных.
Группирование данных позволяет получать статистическую, итоговую и другую информацию по отдельным группам данных. Группировать данные можно по одному или нескольким полям. При этом в одну группу включаются данные с одинаковыми значениями в поле группирования. Например, все записи, сгруппированные по номеру поставщика образуют столько групп, сколько имеется разных значений в поле PN.
При работе с группами данных в бланк запроса нужно добавить строку Групповая операция:
Þ Итоги из к.з. меню, открытого в нижней части бланка запроса или кнопкой Итоги на ленте
Для каждого поля в строке Групповая операция может быть выбрано:
Группировка - означает, что данное поле является полем группирования (устанавливается по умолчанию);
Sum - суммирование всех значений поля по группе данных;
Avg - среднее значение поля по группе;
Min или Max - минимальное или максимальное значение поля в группе;
Count - количество записей, входящих в группу;
StDev -среднеквадратическое отклонение;
Var – дисперсия;
First или Last - первое или последнее значение поля в группе;
Выражение - позволяет ввести выражение вместо имени поля в строке Поле бланка запроса;
Условие - показывает, что это поле используется только для задания условия отбора данных в запросе. Это поле не отображается в динамическом наборе данных.
Если группировка производится по нескольким полям, то слово Группировка должно быть в каждом из них.
На рисунке 34 показан QBE-запрос с группировкой данных по полю PN.Функция Count вычисляет количество записей в каждой группе, а функция Sum - суммарное количество деталей в каждой группе. Псевдонимы: количество записей в группе и суммарное количество добавляются вручную.
Рисунок 34 – Запрос с группировкой данных
Соответствующий SQL-запрос:
SELECT PD.PN, Count(PD.PN) AS [крличество записей в группе],