- •Часть 2
- •Часть 2
- •Содержание
- •1. Конструктор запросов 4
- •2. Запрос на выборку. 13
- •1. Конструктор запросов
- •Создание выражений с помощью Построителя выражений
- •2. Запрос на выборку.
- •2.1. Запрос, основанный на одной таблице и использующий простое условие
- •2.2. Простая выборка из двух связанных таблиц.
- •2.3. Запрос, использующий вычисляемые поля
- •2.4. Запрос с группировкой
- •2.5. Запрос, использующий связь таблицы с самой собой (рекурсивное соединение)
- •2.6. Запрос, использующий две ссылки на одну таблицу
- •2.7. Выборка повторяющихся записей
- •2.8. Поиск несовпадающих записей
- •2.9. Другие сведения, полезные при разработке запросов
- •3. Запрос на удаление записей.
- •3.1. Запрос на удаление всех записей из таблицы (очистка таблицы)
- •3.2. Запрос на удаление с ограничением числа удаляемых записей
- •3.3. Запрос на удаление с применением внешнего объединения таблиц
- •4. Запрос на добавление записей в существующую таблицу
- •4.1. Запрос на добавление записей во временную таблицу текущей базы данных
- •4.2. Запрос на добавление записей во временную таблицу внешней базы данных
- •5. Запрос на обновление записей в таблице.
- •5.1. Простой запрос на обновление записей
- •5.2. Запрос на обновление полей нескольких связанных таблиц.
- •6. Запросы на объединение.
- •6.1. Запрос на объединение, связывающий воедино однотипные таблицы из различных баз данных.
- •7. Перекрестные запросы
- •7.1. Создание перекрестного запроса при помощи мастера
- •7.2. Сознание перекрестного запроса при помощи конструктора запросов
- •8. Запросы с параметрами
- •9. Подчиненные запросы
- •9.1. Использование подчиненных запросов в выражениях для условий отбора записей
- •9.2. Использование подчиненных запросов в определении полей основного запроса.
- •10. Свойства полей запросов
- •11. Свойства запросов
2.3. Запрос, использующий вычисляемые поля
Допустим, необходимо выбрать имена, фамилии сотрудников и наименования клиентов, у которых дата исполнения заказов превышает дату размещения на 20 дней и, кроме того, индекс начинается с буквы "S". Для этого добавьте в новый запрос таблицы Заказы, Клиенты и Сотрудники. Microsoft Access автоматически свяжет поля КодКлиента таблиц Клиенты и Заказы и поля КодСотрудника таблиц Заказы и Сотрудники, поскольку обе связи существуют на уровне базы данных (постоянные связи). В первом пустом поле бланка запроса (в строке Поле введите текст: Сотрудник: [Фамилия] & " " & [Имя] и установите порядок сортировки по возрастанию. Далее, добавьте в бланк поле Название из таблицы Клиенты и также установите для него порядок сортировки по возрастанию. В определение третьего поля введите строку: Дни: [ДатаИсполнения]-[ДатаРазмещения] и установите для него условие: >20. Последнее, что необходимо сделать — добавить в макет запроса поле Индекс из таблицы Клиенты, снять для него флажок Вывод на экран и добавить условие отбора Like "S*". Полученный запрос представлен на рис. 2.3 (режим конструктора, режим таблицы и SQL-оператор).
|
|
Рис 2.3. Запрос, использующий вычисляемое поле
Пояснения
а). Для объединения значений полей Фамилия и Имя в поле Сотрудник используется операция конкатенации строк (&).
б). Оператор Like используется для проверки соответствия строки указанному шаблону. Полный синтаксис оператора Like:
результат — строка Like шаблон
Если строка соответствует шаблону, результатом будет Истина (True), иначе — Ложь (False). Если строка либо шаблон имеют значение Null (то есть, какое-либо значение отсутствует), то результат тоже будет иметь значение Null. Шаблон является строкой, которая кроме обычных символов, может содержать специальные символы. В таблице 2.1 приведено описание специальных символов, а в таблице 2.2 — примеры использования оператора Like.
в). Для того чтобы присвоить полю какое-нибудь имя, отличное от стандартных имен присваиваемых конструктором запросов автоматически, нужно ввести его в самом начале определения поля (в строке Поле) и указать после него двоеточие.
Таблица 2.1. Специальные символы, используемые с оператором Like
Символ |
Описание |
? |
Любой одиночный символ. |
* |
Любое количество символов (от нуля и больше). |
# |
Любая цифра (от 0 до 9). |
[A-Z] |
Любой символ, попадающий в указанный диапазон |
[!A-Z] |
Любой символ, не попадающий в указанный диапазон |
[A,D,H] |
Любой символ из указанного списка. |
[!A,D,H] |
Любой символ, не попадающий в указанный список. |
Таблица 2.2. Примеры использования оператора Like.
Пример |
Результат |
|
"aBBBa" |
Like "a*a" |
Истина (True) |
"F" |
Like "[A-Z] |
Истина (True) |
"F" |
Like "[!A-Z]" |
Ложь (False) |
"a2a" |
Like "a#a" |
Истина (True) |
"aM5b" |
Like "a[L-P]#[!c-e]" |
Истина (True) |
"BAT123khg" |
Like "B?T*" |
Истина (True) |
"CAT123khg" |
Like "B?T*" |
Ложь (False) |
"F" |
Like "[A,X,F]" |
Истина (True) |
"Z" |
Like "[A,X,F]" |
Ложь (False) |
