Лекция № 6б Запросы для нескольких таблиц
Запросы для нескольких таблиц аналогичны запросу для одной таблицы за исключением следующего:
¨ пользователь запрашивает данные из каждой таблицы,
¨ пользователь должен использовать элементы "образцы" для сообщения
СУБД информации о связываемых данных. Таблицы в множественном запросе связываются общими полями, которые должны содержать аналогичные виды данных. Поля для одного "образца" в разных таблицах могут иметь не идентичные имена, но типы полей должны быть совместимы. Элементы образцов позволяют:
¨ выполнять вычисления над значениями,
¨ вставить новую запись, основанную на старых записях существующих таблиц,
¨ организовывать запись логических условий.
В форме запроса элементы образца записываются с предварительным нажатием клавиши "F5", после чего имя образца вводится с выделением его путем контрастирующего цвета. Имена примеров должны состоять из букв латинского алфавита и цифр, не допускается использование пробелов. В соединяемых полях необходимо использовать одинаковые имена образцов. В дальнейших примерах наряду с ранее приведенными таблицами будет использоваться таблица, показанная на рис. 6b.1.
AUD
------------------------------+
¦ Aud ¦ S ¦ Qst ¦
+-----------+---------+-------¦
¦ 326п ¦ 36 ¦ 25 ¦
+-----------+---------+-------¦
¦ 325п ¦ 100 ¦ 36 ¦
+-----------------------------+
Рисунок 6b.1
Здесь использованы следующие обозначения:
Aud - номер аудитории,
S - площадь аудитории,
Qst - число посадочных мест в аудитории.
Пусть требуется для каждой группы определить доступные для проведения занятий аудитории. Соответствующий запрос и его результат приведены на рис. 6b.2.
GROUPS
+--- -----------------------------------+
¦ F ¦ SPEC ¦ Y ¦ STG ¦ QST ¦
+--- +---------+--------+-------+-------¦
¦ Е ¦ ¦ ¦ V ¦ V E ¦
+---------------------------------------+
AUD
------------------------------+
¦ Aud ¦ S ¦ Qst ¦
+-----------+---------+-------¦
¦ V ¦ ¦ >S+2 ¦
+-----------+---------+-------¦
ANSWER
------------------------------+
¦ STG ¦ QST ¦ Aud ¦
+-----------+---------+-------¦
¦ ВМ-51 ¦ 33 ¦ 325п ¦
¦ ПО-71 ¦ 24 ¦ 325п ¦
¦ ПО-51 ¦ 16 ¦ 326п ¦
¦ ПО-51 ¦ 16 ¦ 325п ¦
------------------------------+
Рисунок 6b.2
ВНЕШНЕЕ СОЕДИНЕНИЕ.
Часто требуется выполнить "внешнее" соединение, когда требуется сохранить в результативной таблице не часть записей исходных таблиц, а сохранить все записи одной из таблиц, оставив в тех строках результативной таблицы, которые не соответствуют никаким строкам соединяемой таблицы поля пустыми.
Пусть, например список групп содержит четыре записи (рис 6b.3).
GROUPS.
+------------------------------------------------------------+
¦ Код ¦ Специаль- ¦ Год ¦ Наименование ¦ Число ¦
¦ факультета ¦ ность ¦поступл. ¦ потока ¦студентов¦
+------------+------------+---------+------------ -+---------¦
¦ F ¦ Spec ¦ Y ¦ STG ¦ QST ¦
+------------+------------+---------+------------ -+---------¦
¦ 11 ¦ 220400 ¦ 1997 ¦ ПО-71 ¦ 24 ¦
¦ 10 ¦ 220400 ¦ 1995 ¦ ПО-51в ¦ 16 ¦
¦ 11 ¦ 220400 ¦ 1995 ¦ ПО-51 ¦ 16 ¦
¦ 55 ¦ 220100 ¦ 1995 ¦ ВМ-51 ¦ 33 ¦
+------------------------------------------------ -----------+
Рисунок 6b.3
Тогда запрос, определяющий для каждой группы название факультета использующий внешнее соединение (восклицательный знак при коде группы) приведет к результату, отраженному на рис. 6b.4.
GROUPS
+-------------------------------------+
¦ F¦ SPEC ¦ Y ¦ STG ¦ QST ¦
+--+---------+--------+-------+-------¦
¦E!¦ ¦ ¦V ¦ v ¦
+-------------------------------------+
FAC
+--------------+
¦ F ¦ NF ¦
+-----+--------¦
¦ Е ¦ V ¦
+--------------+
ANSWER
------------------------------+
¦ STG ¦ QST ¦ NF ¦
+-----------+---------+-------¦
¦ ПО-71 ¦ 24 ¦ ФММПУ ¦
¦ ПО-71в ¦ 16 ¦ ¦
¦ ПО-51 ¦ 16 ¦ ФММПУ ¦
¦ ВМ-51 ¦ 33 ¦ ИИТ ¦
-----------------------------+
Рисунок 6b.4
ВЫЧИСЛЕНИЯ В ЗАПРОСАХ.
В запросах можно использовать зарезервированное слово "calc" для записи выражения вычисляемого, например, для образования в результате для получения нового поля (рис. 6б.5)
GROUPS
+--- -----------------------------------------+
¦ F ¦ SPEC ¦ Y ¦ STG ¦ QST ¦
+--- +-------+----+-------------------+-------¦
¦ ¦ ¦ ¦ V calc S/ST as R ¦ V ST ¦
+---------------------------------------------+
AUD
------------------------------+
¦ Aud ¦ S ¦ Qst ¦
+-----------+---------+-------¦
¦ V ¦ S ¦ >ST+2 ¦
+-----------+---------+-------¦
Рисунок 6б.5
Здесь сочетаниями заглавных букв S и ST обозначены переменные образцы, используемые в запросе. R - идентификатор нового поля в результативной таблице.
ОПЕРАЦИИ.
К запросам операциям относят следующие процедуры:
¨ включение в таблицу новых записей с заданными значениями полей (оператор insert);
¨ удаление из таблицы записей, удовлетворяющих заданным условиям (оператор delete );
¨ изменение значений полей в выбранных записях (оператор changeto);
¨ выделение выбранных записей в таблице (оператор find).
Вообще говоря, можно комбинировать операции в одном запросе. В этом случае вначале выполняется операция delete, затем changeto, после этого выполняется операция удаления. В то же время нельзя операцию insert комбинировать в одном запросе с внешним соединением.
Операция INSERT.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.