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

Данная операция крайне необходим, когда нужно включить сформиро ванные записи в заранее созданную таблицу с семейством разработанных для нее экранных форм и отчетов. Использование в таком случае операции RENAME для получения из ANSWER таблицы с заданным именем приводит к уничтожению таблицы для которых генерировались формы и отчеты со всем семейством ее объектов.

INSERT-запрос обычно выполняется с использованием образцов.

Чтобы задать такой запрос, необходимо заполнить бланк  для одной или нескольких таблиц источников, из которых будет получена информация, и таблицу-цель ‑ в которую будут добавлены записи. Оператор INSERT указывается в самом крайнем левом поле таблицы-цели. В другие поля соответствующего бланка вводятся выражения, представляющие значения, из которых формируются включаемые записи. Такие выражения могут содержать:

¨  элементы примеров, которые определяются в таблицах источниках,

¨  константы,

¨  переменные.

Поля, в которые не вводятся выражения будут после выполнения запроса пустыми.

При реализации INSERT-запроса записи добавляются в таблицу-цель, а таблицы источники не изменяются. По результатам выполнения запроса формируется временная таблица INSERTED, которая содержит включенные записи.

Пример INSERT-запроса приведен на рис. 6б.

GROUPS                                  FAC

+---------------------------------+     +---------------+

¦FAC ¦  SPEC ¦  Y ¦  STG  ¦   QST ¦     ¦ CF    ¦ NFAC  ¦

-+----+-------+----+-------+-------¦     ¦-------+-------¦

¦ F  ¦       ¦    ¦   G   ¦    ST ¦     ¦  F    ¦  NF   ¦

+---------------------------------+     +---------------+

STRFAC

+-------------------------------------+

¦           ¦  NFAC   ¦ GR    ¦  QST  ¦

+-----------+---------+-------+-------¦

¦ INSERT    ¦   S     ¦  G    ¦  ST   ¦

+-------------------------------------+

          Рисунок 6б.5

Операция DELETE.

Ключевое слово "Delete" в левой колонке формы запроса для таблицы позволяет удалить из нее выбранные по какому-либо условию записи (только полные записи, но не отдельные значения). В других столбцах и на других связанных запросных формах можно вводить условия выбора записи для удаления. Если условия не определяются, из таблицы при выполнении запроса удаляются все записи.

В результате выполнения запроса будет создана временная таблица Deleted, содержащая все удаленные записи. Она подстраховывает пользователя на тот случай, если он пожелает восстановить исходную таблицу.

Это реализуется услугой Tools\More\Add.

Пример DELETE-запроса представлен на рис. 6б.6

GROUPS                                  FAC

+------------------------------------------+     +---------------+

¦        ¦FAC ¦  SPEC ¦  Y ¦  STG  ¦   QST ¦     ¦ CF    ¦ NFAC  ¦

+--------+----+-------+----+-------+-------¦     ¦-------+-------¦

¦ delete ¦ F  ¦       ¦    ¦       ¦       ¦     ¦  F    ¦="ИИТ" ¦

+--------+---------------------------------+     +---------------+

                   Рисунок 6б.6

ИЗМЕНЕНИЕ ЗНАЧЕНИЙ ПОЛЕЙ В ВЫБРАННЫХ ЗАПИСЯХ.

Ключевое слово "changeto" позволяет изменить значение в таблице, основываясь на условии в запросе. Этот вариант запроса особенно удобен, если Вы хотите изменить несколько значений одинаковым способом.

Чтобы изменить записи, нужно набрать ключевое слово в поле, которое будет изменяться. Затем вводится новое значение или выражение, представляющее его. В данное поле и другие поля, а также в связанные запросные формы можно включать условия выбора.

В результате выполнения запроса будет сгенерирована временная      таблица "changed", которая содержит копии записей дом того       момента, как они были изменены.

Пример запроса на изменение значений в заданном поле       приведен на рис. 6б.7.

GROUPS                                  FAC

+--------------------+-----------------+     +----------------+

¦    FAC     ¦  SPEC ¦  Y ¦  STG ¦ QST ¦     ¦ CF    ¦ NFAC   ¦

+------------+-------+----+------+-----¦     ¦-------+--------¦

¦changeto F  ¦=220400¦    ¦      ¦     ¦     ¦  F    ¦="ФММПУ"¦

+--------------------------------------+     +----------------+

Рисунок 6б.7.

Операция FIND.

Эта операция позволяет использовать запрос по примеру, чтобы выделить записи или группы записей в таблице.

ОБРАБОТКА ГРУПП ЗАПИСЕЙ.

Все обсужденные ранее запросы формулировались относительно отдельных записей таблиц. Но используя QBE, можно формировать запросы относительно групп записей, рассматриваемых в целом:

¨  можно выбирать записи, базируясь на характеристиках группы (например, на каком факультете меньше десяти учебных групп);

¨  можно вычислять статистические характеристики для групп записей (например, средние значения);

¨  можно сравнивать характеристики группы с разными записями (например, в каких группах больше студентов, чем в любой группе ФММ и ПУ).

Эти запросы отличаются от предыдущих тем, что в момент их выполнения необходимо рассматривать более, чем одну запись. Например, в таблице Groups нет отдельной записи, в которой бы говорилось, имеет ли факультет более десяти групп. В этих запросах могут использоваться групповые операции для определения максимума, минимумма, среднего, суммы по группе записей, определение общего количества, входящих в нее элементов.

В примере на рис. 6б.8 выделяются записи, основанные на характеристиках групп.

GROUPS                                  FAC

+------------+------------+----------------+   +----------------+

¦ FAC  ¦SPEC ¦ Y ¦  STG   ¦ QST            ¦   ¦ CF    ¦ NFAC   ¦

+------+-----+---+--------+----------------+   ¦-------+--------¦

¦ F    ¦     ¦   ¦count<10¦ Calc count as Q¦   ¦  F    ¦  V     ¦

+------------------------------------------+   +----------------+

Рисунок 6б.8.

В соответствии с этим запросом будет сформирована временная результативная таблица ANSWER, которая будет содержать наименования факультетов с числом групп меньше десяти и количество групп на этом факультете.