Запросы для нескольких таблиц. Изменение значений полей в выбранных записях

Страницы работы

Содержание работы

Лекция № 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.

Похожие материалы

Информация о работе

Предмет:
Базы данных
Тип:
Конспекты лекций
Размер файла:
52 Kb
Скачали:
0