Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
УЧЕБНОЕ ПОСОБИЕ по БД моя версия.doc
Скачиваний:
29
Добавлен:
27.09.2019
Размер:
4.22 Mб
Скачать

Многотабличные запросы

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

При проектировании и конструировании запроса важнейшим условием является правильное представление о том, как идет объединение записей таблиц при формировании результата.

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

Вычисляемые поля

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

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

Рис. 2.36 Вызов окна построителя выражений

Р ис. 2.37 Создание формул в построителе выражений

Вычисляемое поле может содержать вызовы встроенных функций Access и следующие операторы:

«+» – складывает два арифметических выражения;

«–» – вычитает из первого арифметического выражения второе;

«*» – перемножает два арифметических выражения;

«/» – делит первое арифметическое выражение на второе;

«\» – округляет два арифметических выражения до целых значений и делит первое на второе.  Результат округляется до целого;

«^» – возводит первое арифметическое выражение в степень, задаваемую вторым арифметическим выражением;

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

«&» – создает текстовую строку как результат присоединения второй строки к концу первой. Если один из операндов является числом, то оно автоматически преобразуется в строку символов.

Например, необходимо вычислить стоимость товара, приобретенного у поставщика. Для этого необходимо ввести формулу:

цена покупки * количество купленного

Для построения выражения надо выбрать таблицу «Товары», а в ней поля «Цена покупки» и «Количество купленного». При создании выражения в окне построителя формула будет отображаться следующим образом:

[товары]![цена покупки]*[товары]![кол-во купленного]

В первых квадратных скобках указывается название таблицы, из которой взяты данные. (Это нужно на тот случай, если данные берутся из нескольких таблиц, или в нескольких таблицах есть поля с одинаковыми названиями). В следующих скобках указывается название поля. Знак «!» используется как разделитель. В результате вычислений будет создано поле, в котором числа из поля «Цена» построчно будут перемножены на числа, из поля «Количество» (Рис. 2.38).

Название

Цена покупки

Кол-во покупки

В результате выполнения запроса появится таблица:

Название

Выражение 1

1

Хлеб

10

100

1

Хлеб

1000

2

Батон

12

90

2

Батон

1080

3

Сушка

23

120

3

Сушка

2760

Рис. 2.38 Вычисление стоимости товара с помощью построителя выражений

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

По умолчанию первому вычисляемому полю присваивается имя Выражение1 следующему Выражение2 и т.д. Пользователь имеет возможность присвоить новое имя и подпись вычисляемому полю.

Для изменения только имени поля в запросе в режиме конструктора запроса в бланке запроса вместо «выражение N» надо ввести новое имя. Новое имя используется не только в заголовке столбца таблицы запроса, а и в новых объектах, построенных на этом запросе.

Для изменения подписи поля в свойствах поля надо установить курсор мыши на вычисляемое поле в бланке запроса. В окне «Свойства поля» на вкладке «Общие» ввести нужный текст подписи в строку «Подпись поля».

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

Р ис. 2.39 Использование параметра в вычисляемых полях