Создание многотабличного запроса в режиме конструктора

Выше уже был рассмотрен пример создания многотабличного запроса, но при помощи мастера простых запросов. Сейчас создадим такой запрос «с нуля» в режиме конструктора. Зададимся целью вывести информацию по клиентам, заказам, сделанным ими и сумме оплаты по каждому заказу. Из такой таблицы будет видно, какой клиент наиболее активный (по числу заказов) и сколько денег он принес фирме.

Для создания запроса выполните следующее:

  1. Выберите вкладку Запросы, затем Создание запросов в режиме конструктора.
  2. Добавьте в запрос три таблицы Клиенты, Заказы и Оплата, как показано на рис. 8.

Создание многотабличного запроса в режиме конструктора - student2.ru

(Рис. 8)

  1. Поставьте сортировку по возрастанию для поля ФамилияКонтакта.
  2. Запустите запрос и определите наиболее активного клиента.

Сложные запросы на выборку

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

Основные операторы:

  • Арифметические операторы. Выполняют простые арифметические операции:
    • Сложение (+);
    • умножение (*);
    • вычитание (-);
    • деление (/);
    • целочисленное деление (\).

При целочисленном делении числа в числителе и знаменателе сначала округляются, затем вычисляется их частное, а затем округляется.

  • Операторы сравнения. Сравнивают два операнда. Возвращают логические значения (True, False, Null). К этому типу относятся следующие операторы:
    • Больше (>);
    • больше или равно (>=);
    • меньше (<);
    • меньше или равно (<=);
    • не равно (<>).
  • Логические (булевы) операторы. Они так же возвращают значения True, False, Null. Некоторые из них:
    • Логическое И (And);
    • Включающее ИЛИ (Or);
    • Логическое НЕТ (Not);
    • Исключающее ИЛИ (Xor).

Все логические операторы, за исключением оператора Not, всегда работают с двумя операндами.

  • Операторы конкатенации. Служат для объединения нескольких строк в одну. Обозначаются: & .
  • Операторы идентификации. Программа Access работает с двумя идентификаторами: !(восклицательный знак) и . (точка). С помощью этих символов можно обращаться к конкретным объектам, например, к полю таблицы. Символ «!» используется вместе с различными зарезервированными словами, синтаксис его использования такой: Класс объекта!Имя объекта. Символ «.» отделяет имена объектов от их свойств, синтаксис следующий: Класс объекта!Имя объекта.Свойство.
  • Прочие операторы.Это операторы языка SQL, такие как Like, ls, ln, Between .. And, с помощью которых можно упростить создание выражений.
    • ls.Используется в выражениях ls Null или ls not Null. Они определяют наличие или отсутствие нулевого значения.
    • Like. Проверяет, соответствует ли строковое выражение заданному шаблону. Шаблоны составляются при помощи символов: *(любое число символов), ? (любой одиночный символ), # (любая цифра), [список] (любой символ из списка), [!список] (любой символ, не принадлежащий списку).
    • ln. Проверяет, проверяет совпадает ли значение с одним из элементов, указанных в списке. Например ln(“Украина”, “Россия”). Соответственно этому критерию будут отобраны записи, содержащие значение «Украина» или «Россия».
    • Between …And. Определяет, принадлежит ли числовое значение заданному диапазону, например, Between #01-янв-1995# And #01-дек-1996#.

Литералы.Это используемые в MS Access значения в их собственном представлении. Они бывают следующих типов:

  • Числовые.Вводятся как ряд чисел, могут содержать знак разделителя (в десятичной дроби), знак «-» для отображения отрицательных значений. Например, 3,4567E-01, 120, -23.
  • Текстовые. Включают любые строковые символы (А-Я, A-Z), числа от 0 до 9, знаки пунктуации, специальные символы клавиатуры. Строковые символы нужно заключать в кавычки, например, “ул. Лермонтова”.
  • Литералы даты и времени. В приложении Access знак # ставится до и после даты, хотя, если дата задана в стандартном распознаваемом Access формате, то это необязательно.

Функции. В программе Access можно использовать как встроенные функции, так и создавать свои. Вот некоторые часто используемые функции:

· Функции даты и времени (приведены в виде примеров)

o Date(). Отображает текущую дату в формате дд.мм.гггг;

o DateAdd(“d”,-15,[ДатаЗаказа]). Возвращает дату, предшествующую дате заказа на 15 дней.

o Datediff(“d”,[ДатаЗаказа],[ДатаИсполнения]). Представляет разницу числа дней между датой исполнения и датой заказа.

o Year(#12.06.08#). Возвращает год указанной даты, т.е. 2008.

· Функции обработки текста

o Format ( Date, “dd-mmm-yyyy”). Возвращает текущую дату, отформатированную в указанном формате.

o LnStr(“ГОРОД”,”Р”). Укажет номер позиции, начиная с которой вторая фраза входит в первую.

o LCase(“ГОРОД”). Преобразовывает к нижнему регистру.

· Функции преобразования типа данных

o Val(“12,34”) – текст “12,34” преобразуется в число 12,34

o Str(123,6) – число 123,6 преобразуется в текст “123,6”

· Функции тригонометрические и финансовые(без примеров)

Приступим к созданию сложных запросов.

Запрос по дате исполнения:Вывести в результирующую таблицу коды заказов, выполненных за период с 1 декабря 2007 г. по 1 января 2008 г. включительно. При этом использовать оператор языка SQL: Between …And. Указать код клиента и код метода доставки.

Откройте конструктор запросов, добавьте в него таблицу Заказы. Поместите требуемые поля в строку Поле (это КодЗаказа, КодКлиента, ДатаИсполнения, КодМетодаДоставки). В поле Условие отбора для поля ДатаИсполнения введите условие: Between #01.12.2007# And #01.01.2008#. Запустите запрос и сохраните его под именем ЗапросПоДатеИсполнения.

Запрос по должности или фамилии сотрудника:Вывести в результирующую таблицу информацию о всех сотрудниках фирмы, чья фамилия начинается с буквы «П» или его должность – менеджер.

Откройте конструктор запросов, добавьте в него таблицу Сотрудники. Поместите все поля в строку Поле. Оформите бланк запроса так, как показано на рис. 9:

Создание многотабличного запроса в режиме конструктора - student2.ru

(Рис. 9)

Запустите его и сохраните по именем ДолжностьИЛИФамилия.

Запрос по должности и фамилии сотрудника:Вывести в результирующую таблицу информацию о всех сотрудниках фирмы, чья фамилия начинается с буквы «П» и должность – менеджер.

Откройте конструктор запросов, добавьте в него таблицу Сотрудники. Поместите все поля в строку Поле. Оформите бланк запроса так, как показано на рис. 10:

Создание многотабличного запроса в режиме конструктора - student2.ru

(Рис. 10)

Запустите его и сохраните по именем ДолжностьИФамилия.

Запрос по цене и марке товара:Вывести в результирующую таблицу все товары, удовлетворяющие одному из условий: либо это товары марки «Галена», цена которых больше 200 р., либо это товары фирмы «Байер», цена которых меньше 100 р. Товары упорядочить по алфавиту.

Откройте конструктор запросов, добавьте в него таблицу Товары. Поместите все поля в строку Поле. Оформите бланк запроса так, как показано на рис. 11:

Создание многотабличного запроса в режиме конструктора - student2.ru

(Рис. 11)

Выполните и сохраните запрос под именем ЦенаИМаркаТоваров.

Наши рекомендации