Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Access часть2.doc
Скачиваний:
34
Добавлен:
14.08.2019
Размер:
6.24 Mб
Скачать

2.1. Запрос, основанный на одной таблице и использующий простое условие

Допустим, нужно выбрать из таблицы Заказы названия всех клиентов, заказы у которых были размещены в 1998 году и расположить их в алфавитном порядке. Для этого сначала создайте новый запрос, нажав кнопку Создать и выбрав в диалоговом окне Новый запрос пункт Конструктор. Затем нужно добавить к запросу таблицу Заказы и перетащить из нее в бланк запроса поля Название Получателя и Дата Размещения. В строке Условие отбора для поля Дата Размещения введите условие: Between #01.0l.98# And #31.12.98# и снимите флажок Вывод на экран. Для поля Название Получателя установите порядок сортировки по возрастанию. Если перейти в режим просмотра, то будет видно, что наименования некоторых клиентов выводятся много раз (ровно столько, сколько раз ссылка на клиента попадается в исходной таблице Заказы. Чтобы избежать этого, нужно открыть окно Свойства запроса, щелкнув на соответствующей кнопке панели инструментов (или выбрав одноименный пункт контекстного меню и установить свойство Уникальные значения в значение Да. На рис.2.1. изображен получившийся запрос в режиме конструктора, в режиме таблицы и соответствующая строка оператора SQL.

Рис. 2.1. Запрос, основанный на одной таблице и использующий простое условие

Пояснения

а). Функция Between ... And определяет принадлежность значения выражения указанному диапазону. Полный синтаксис:

выражение [Not] Between значение_ 1 And значение 2, где:

б) Конструкции SQL.

SELECTзадает требование к Microsoft Jet (ядро базы данных, которое обслуживает запросы) на выборку данных, тем самым определяя тип запроса. В предложении SELECТ перечисляются все поля, которые должны войти в результирующий набор данных, в том числе вычисляемые.

DISTINCTнеобязательный предикат, использующийся совместно с предложением SELECT. Задает выборку только уникальных результирующих записей. Указывается после ключевого слова SELECT перед списком выбираемых полей. Предикат DISTINCT появился в операторе автоматически после того, как для свойства запроса уникальные значения было задано значение Да.

FROM. В этом предложении задаются имена одной или нескольких исходных таблиц (запросов). Здесь же указываются связи между таблицами, если они есть.

WHERE. В этом предложении задаются условия, согласно которым отбираются записи из исходных таблиц (запросов).

ORDER BY. Здесь можно задать порядок сортировки для каждого из полей, входящих в это предложение. Порядок сортировки указывается после каждого наименования поля в предложении ORDER BY и может принимать значения ASC (по возрастанию) или DESC (по убыванию). Если порядок сортировки не указан, то подразумевается — по возрастанию (ASС).

Точка с запятой (;) — обязательно указывается в конце оператора SQL.

2.2. Простая выборка из двух связанных таблиц.

Допустим, нужно выбрать города и наименования клиентов, заказы у которых были размещены в 1998 году, расположив их в алфавитном порядке по возрастанию. Для этого сначала нужно создать новый запрос в режиме конструктора и добавить в него две таблицы — Заказы и Клиенты. Поскольку между этими таблицами существует постоянная связь на уровне базы данных, то она будет автоматически отображена в конструкторе. Затем в бланк запроса необходимо перетащить поля Город и Название из таблицы Клиенты и поле Дата Размещения из таблицы Заказы. Для поля Дата Размещения введите условие: Between #01.01.98# And #31.12.98# и снимите для него флажок Вывод на экран, а для полей Город и Название установите порядок сортировки по возрастанию. Осталось только установить свойство запроса Уникальные значения в значение Да (как и в предыдущем примере), и запрос готов. Таким образом, сконструированный запрос изображен на рис.2.2 (в режиме конструктора, в режиме таблицы и SQL-оператор). Ниже приведены необходимые пояснения.

Рис. 2.2. Простая выборка из двух связанных таблиц

Пояснения конструкции SQL.

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]