- •Романов в.В.
- •1.2. Типы моделей данных
- •1.3.2. Формализация отношений
- •2.2. Логические связи в рбд
- •4. Работа с данными при помощи запросов
- •4.1. Средства описания запросов
- •4.2 Условия отбора данных
- •А) бланк запроса;
- •4.4. Итоговые запросы
- •А) бланк запроса (вариант 1)
- •Б) бланк запроса (вариант 2)
- •А) схема связей
- •Б) таблица запроса
- •4.6. Запрос с параметром
- •5. Основные этапы разработки рбд
- •6.4. Анализ данных. Определение структуры данных.
- •6.5. Схема базы данных
- •Р ис. 20. Схема базы данных "Транс-2000" (жирным шрифтом выделены первичные ключи)
- •6.6.2. "Расчет затрат на горючее за отчетный период".
- •Содержание
4.2 Условия отбора данных
Рассмотрим пример с объявлением простого условия отбора. Цель запроса - выбрать все рейсы выполненные водителем Ивановым. В этом случае в поле "Фамилия_И_О" запроса "Рейсы" в разделе "Условия отбора" необходимо указать значение по которому будут отбираться записи в БД. Бланк запроса и результат его выполнения приведены на рис. 6.
Рейсы Иванова С.П.: запрос на выборку |
|
|
||
Поле: |
Фамилия_И_О |
Наименование |
Вес |
Марка |
Имя таблицы: |
ВОДИТЕЛИ |
ПУНКТ_НАЗНАЧЕНИЯ |
ПЕРЕВОЗКИ |
МАРКА_АТ |
Сортировка: |
|
|
|
|
Вывод на экран: |
|
|
|
|
Условия отбора: |
"Иванов С.П." |
|
|
|
Или: |
|
|
|
|
А) бланк запроса;
-
Рейсы Иванова С.П.: запрос на выборку
Фамилия_И_О
Наименование
Вес
Марка
Иванов С.П.
п. Стасово
1,5
ГАЗ-53
Иванов С.П.
г. Киселев
3,7
КАМАЗ
Иванов С.П.
п. Ливневка
5,2
МАЗ
б) результат выполнения запроса "Рейсы Иванова С.П."
Рис. 6. Бланк и таблица запроса "Рейсы Иванова С.П."
Выше уже отмечалось, что при использовании условий отбора более чем по одному полю, условия записанные в одной строке объединяются логическим оператором AND (И), записанные в разных строках - оператором OR (ИЛИ). Рассмотрим пример. Цель запроса - составить справку об объеме работ (вес груза и расстояние) выполненных водителем Ивановым С.П. на автомашинах марки КАМАЗ. В соответствии с поставленной целью из БД должны отбираться только те записи, в которых И значение атрибута "Фамилия_И_О" равно "Иванов С.П." И значение атрибута "Марка" равно "КАМАЗ". Следовательно, эти условия в бланке QBE должны быть записаны в одной строке (вариант 1, рис. 7).
Если эти же критерии записать в разных строках (вариант 2, рис. 8), то результат выполнения запроса не будет соответствовать поставленной цели, т.к. в этом случае будут отбираться записи, для которых ИЛИ значение атрибута "Фамилия_И_О" равно "Иванов С.П.", ИЛИ значение атрибута "Марка" равно "КАМАЗ".
Рейсы Иванова С.П. на а/м марки КАМАЗ: запрос на выборку |
||||
Поле: |
Фамилия_И_О |
Марка |
Вес |
Расстояние |
Имя таблицы: |
ВОДИТЕЛИ |
МАРКА_АТ |
ПЕРЕВОЗКИ |
ПУНКТ_НАЗНАЧЕНИ |
Сортировка: |
|
|
|
|
Вывод на экран: |
|
|
|
|
Условия отбора: |
"Иванов С.П." |
"КАМАЗ" |
|
|
Или: |
|
|
|
|
а) бланк запроса;
Рейсы Иванова С.П. на а/м марки КАМАЗ: запрос на выборку |
|||
Фамилия_И_О |
Марка |
Вес |
Расстояние |
Иванов С.П. |
КАМАЗ |
3,7 |
254 |
б) результат выполнения запроса
Рис. 7. Бланк и таблица запроса (первый вариант).
Рейсы Иванова С.П. на а/м марки КАМАЗ: запрос на выборку |
||||
Поле: |
Фамилия_И_О |
Марка |
Вес |
Расстояние |
Имя таблицы: |
ВОДИТЕЛИ |
МАРКА_АТ |
ПЕРЕВОЗКИ |
ПУНКТ_НАЗНАЧЕНИ |
Сортировка: |
|
|
|
|
Вывод на экран: |
|
|
|
|
Условия отбора: |
"Иванов С.П." |
|
|
|
Или: |
|
"КАМАЗ" |
|
|
а) бланк запроса;
Рейсы Иванова С.П. на а/м марки КАМАЗ: запрос на выборку |
|||
Фамилия_И_О |
Марка |
Вес |
Расстояние |
Иванов С.П. |
ГАЗ-53 |
1,5 |
45 |
Локтев И.Д. |
КАМАЗ |
4,2 |
254 |
Антонов Р.Т. |
КАМАЗ |
0,8 |
45 |
Иванов С.П. |
КАМАЗ |
3,7 |
254 |
Иванов С.П. |
МАЗ |
5,2 |
123 |
б) результат выполнения запроса
Рис. 8. Бланк и таблица запроса (второй вариант)
Для текстовых данных критерии выбора могут формулироваться в виде маски. Например, для отбора данных по начальным символам фамилий водителей в разделе условий отбора в поле "Фамилия_И_О" можно указать маску "Ив*" (MS Access преобразует это условие к виду Like "Ив*”). По такому условию отбираются записи в которых значения атрибута "Фамилия_И_О" начинаются с символов "Ив", остальные символы могут быть любыми или могут отсутствовать.
Для числовых переменных допустимы условия на равенство или неравенство. Например, в рассмотренных выше запросах в разделе условий в поле "Расстояние" м.б. записано:
- будут обираться только те строки, в которых значение атрибута "Расстояние" равно 254;
<250 - этому условию удовлетворяют все строки в которых значение
атрибута "Расстояние" меньше 250;
Between 100 And 250 - будут обираться те строки в которых значение
атрибута "Расстояние" находится в интервале от 100 до 250.
Если выполнять отбор данных по полю "Дата" за некоторый период времени, условие можно сформулировать следующим образом Between #16.01.99# And #31.01.99#.
4.3. Вычисляемые поля в запросах
Для получения расчетных данных, в запросах используются вычисляемые поля. Рассмотрим пример (рис. 9). Цель запроса - определить выполненные Ивановым С. П. в период с 16.01.99 по 31.01.99 объемы работ в тоннокилометрах (ткм). Т.к., в таком виде данные в БД не хранятся, для их расчета в запросе формируется вычисляемое поле "Объем". Расчетное выражение отделяется от имени поля двоеточием. Операндами расчетного выражения м.б. константы и ссылки на имена полей таблиц БД или имена других вычисляемых полей. Ссылки указываются в квадратных скобках. Ссылки на имена полей должны точно соответствовать оригиналам (вплоть до регистра). Даже пробел, вставленный между открывающей скобкой и первым символом имени поля, приведет к неправильной ссылке. В выражениях расчетных полей могут использоваться все арифметические операции и круглые скобки, в т.ч. вложенные.
Следует иметь в виду, что к вычисляемым полям применимы условия выбора.
Объем работ: запрос на выборку |
|
||
Поле: |
Фамилия_И_О |
Дата |
Объем:[Вес]*[Расстояние] |
Имя таблицы: |
ВОДИТЕЛИ |
ПЕРЕВОЗКИ |
|
Сортировка: |
|
|
|
Вывод на экран: |
|
|
|
Условия отбора: |
"Иванов С.П." |
Between #16.01.99# And #31.01.99# |
|
Или: |
|
|
|
а) бланк запроса;
-
Объем работ: запрос на выборку
Фамилия_И_О
Дата
Объем
Иванов С.П.
17.01.99
939,8
Иванов С.П.
22.01.99
639,6
б) результат выполнения запроса " Объем работ "
Рис. 9. Бланк и таблица запроса "Объем работ"
