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

Использование соединений для связи записей

В Microsoft Access можно создавать запросы с соединением (equi-join), воз­вращающие только те записи из двух наборов записей, у которых совпадают значения определенных полей, или запросы с внешним соединением (outer join), которые возвращают записи с совпадающими значениями и, кроме того, возвращают все записи из одного из наборов записей, который вклю­чен в запрос. Следующий пример представляет собой запрос с соединением двух таблиц, использующий ключевые слова inner join:

Select студент.Нг, студент.Нс, студент.Фио, успеваемость.Кп, успеваемость.Табн, успеваемость.Видз, успеваемость.Оценка

FROM СТУДЕНТ INNER JOIN УСПЕВАЕМОСТЬ ON (СТУДЕНТ.НС = УСПЕВАЕМОСТЬ.НС) AND (СТУДЕНТ.НГ = УСПЕВАЕМОСТЬ.НГ);

Внешние соединения создаются при помощи ключевых слов left JOIN и RIGHT JOIN. Операция left JOIN используется для создания левого внешнего объединения. Левое внешнее объединение включает все записи из первой (левой) таблицы, даже если нет совпадающих значений для записей из второй (правой) таблицы. Операция Right JOIN используется для создания правого внешнего объединения. Правое внешнее объединение включает все записи из второй (правой) таблицы, даже если нет совпадающих значений с записями из первой (левой) таблицы.

По мере того как запросы становятся сложнее, следует использовать графи­ческий интерфейс для их создания и тестирования. Не забывайте о том, что оператор SQL всегда можно скопировать, просматривая запрос в режиме SQL, и использовать его в программе.

Запросы на изменение

Запросы на изменение (action queries) также представляют собой операторы SQL, генерируемые через графический интерфейс запроса в режиме конст­руктора. Ниже приведены некоторые примеры запросов на изменение.

1. Запрос на удаление:

DELETE СТУДЕНТ.* , ГРУППА.КОЛ

FROM ГРУППА INNER JOIN СТУДЕНТ

ON ГРУППА.НГ = СТУДЕНТ.НГ

WHERE (((ГРУППА.КОЛ)<5))

Инструкция DELETE удаляет из таблицы записи, удовлетворяющие условию отбора, заданному в условии WHERE. Для того чтобы указать, из какой именно таблицы должны быть удалены записи, в список полей включается конструкция имя_таблицы. * (СТУДЕНТ. *).

2. Запрос на обновление:

UPDATE СТУДЕНТ SET НГ = 101

WHERE Пбалл = 4.5

Инструкция UPDATE обновляет указанное в предложении SET поле НГ, присваивая значение 101 во всех записях, которые удовлетворяют условию отбора, заданному в предложении WHERE.

3. Запрос на вставку:

INSERT INTO УСПЕВАЕМОСТЬ ( НГ, НС, КП, ТАБН, ВИДЗ, ОЦЕНКА )

SELECT УСПВРЕМ. НГ, УСПВРЕМ. НС, УСПВРЕМ. КП, УСПВРЕМ.ТАБН,

УСПВРЕМ.ВИДЗ, УСПВРЕМ.ОЦЕНКА

FROM УСПВРЕМ

Инструкция INSERT INTO позволяет добавить записи в указанную таблицу УСПЕВАЕМОСТЬ. Число добавляемых записей определяется числом записей, возвращаемых используемой инструкцией SELECT. Списки имен полей и порядок их перечисления для таблицы УСПЕВАЕМОСТЬ, куда добавляются записи, и для таблицы, определяемой инструкцией выбора, должны совпадать.

4. Запрос на создание таблицы:

SELECT DISTINCTROW СТУДЕНТ.НГ, Count (СТУДЕНТ.НГ)

AS Count_НГ

INTO [Число студентов]

FROM СТУДЕНТ

GROUP BY СТУДЕНТ.НГ

Инструкция SELECT … INTO, как и инструкция SELECT, выполняет выборку данных, но в отличие от нее для сохранения выбранных данных создает новую таблицу, имя которой указывается в предложении INTO. Новая таблица включает перечисленные в SELECT поля из таблиц, указанных в предложении FROM. Допустимо использование предложения GROUP BY, определяющего поле группировки. При этом список полей новой таблицы должен включать поле, вычисляемого с помощью одной из статистических функций (в примере - Count). Если перед GROUP BY поместить предложение WHERE, тогда группы будут формироваться из записей, отобранных после применения WHERE.

Для проверки работоспособности операторов SQL выполните следующие действия:

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