Добавлен: 19.10.2018
Просмотров: 7963
Скачиваний: 3
46
Как известно, в большинстве СУБД, при вводе в выражение значений того
или иного типа используются соответствующие данному типу данных
ограничители. В Access при задании запроса ограничители можно не ставить. В
зависимости от типа поля, которое вводится в выражение, определяющее
условие отбора, ограничители добавляются системой автоматически:
- прямые кавычки [" "] вокруг строковых значений.
- символы (#) вокруг дат.
В столбце можно записывать не только значение атрибута, но и знак
операции сравнения; по умолчанию принимается знак " = ". Если Вам,
например, надо определить список всех сотрудников, имеющих оклад меньше
1000 руб., то запрос будет выглядеть так, как изображено на рис. 2.7.
Рис. 2.7. Использование операторов сравнения при задании запроса
В условиях отбора можно задавать и диапазон значений. В этом случае
запрос будет выглядеть подобно тому, как изображено на рис. 2.8.
47
Рис. 2.8. Задание диапазона
Это же условие отбора в графе «ОКЛАД» можно было задать и
следующим образом:
>=1000 And <=1500.
В Access можно задавать и запросы с открытыми двусторонними
диапазонами. Например, для выдачи списка сотрудников, получающих оклад
меньше 1000 руб. и больше 15 000 руб. (т. е. мало- и высокооплачиваемых),
условие отбора надо задать следующим образом:
<1000 Or >15000.
48
2.2.2 Сложные запросы
Если в условиях отбора используется несколько полей, то они могут
соединяться оператором “И” либо “ИЛИ”. Если аргументы поиска записаны в
одной строке, то считается, что они соединены оператором “И” (“AND”). Если
аргументы поиска записаны в разных строках, то считается, что они соединены
оператором “ИЛИ” (“OR”).
Рис. 2.9. Сложный запрос (оператор AND)
На рис. 2.9, 2.10 изображены примеры таких запросов. Первый из них
выдает список военнообязанных мужчин (запрос “И”; аргументы запроса
расположены на одной строке), второй (запрос “ИЛИ”; аргументы запроса
расположены на разных строках) – всех мужчин и военнообязанных женщин.
49
Рис. 2.10 Сложный запрос (оператор OR)
2.2.3 Запросы к связанным таблицам
Если была предварительно определена схема данных, то при добавлении
таблиц в запрос они будут должным образом связаны. Даже если связи между
таблицами не были созданы пользователем предварительно, то при добавлении
в запрос двух таблиц, содержащих поля с одинаковым или совместимым типом
данных, а также, если одно из полей связи является ключевым, связи могут быть
созданы автоматически. Автоматическое объединение (соединение) можно
разрешить
или
запретить.
Для
этого
надо
выполнить
следующую
последовательность шагов:
1. В меню “Сервис” выбрать команду “Параметры”
2. Перейти к вкладке “Таблицы/Запросы”.
3. Установить/снять флажок “Автоматическое объединение”.
Параметр “Автоматическое объединение” относится только к новым
запросам.
Если связи не были определены предварительно, и связи не созданы
автоматически, то надо задать соединение таблиц вручную (так же, как это
делалось при задании схемы).
50
Внимание!!! Если связь не задана (и не отменено “Автоматическое
объединение”), то будет осуществляться связь каждой записи одной таблицы
с каждой записью второй таблицы.
Рис. 2.11 Выполнение запросов на связанных таблицах
Надо осторожно относиться к формированию запросов к связанным
таблицам. Как Вы думаете, что будет получено в ответ на запрос, изображенный
на рис. 2.11? На самом деле ответить на этот вопрос, не имея дополнительной
информации, нельзя. Чтобы ответить на поставленный вопрос надо знать,
каковы параметры объединения (если Вы внимательны, то по виду линии
сможете определить вид связи; сравните рис. 2.11 и 2.12) и какие значения
имеют свойства «Уникальные записи» и «Уникальные значения» (этого на
схеме не видно). Если задано обычное («внутреннее») соединение таблиц и для
свойства «Уникальные значения» задано значение «Да», то в ответ на запрос,
содержащий в бланке запроса поле «ФИО» и больше ничего, будет получен
список сотрудников, имеющих детей.