Создание объединенной выборки

We use cookies. Read the Privacy and Cookie Policy

Создание объединенной выборки

В предыдущих разделах мы рассмотрели большую группу запросов на выборку, в том числе запросы с использованием нескольких таблиц, объединенных связями. Однако в системе Access 2002 предусмотрены и запросы других типов:

• на создание таблицы;

• на добавление записей в таблицу;

• на удаление записей из таблицы;

• на обновление записей в таблице;

• перекрестный запрос.

Запросы всех названных типов могут не только использоваться по прямому назначению, но и быть частью более сложных, комплексных запросов. Предположим, вам необходимо получить выборку записей из таблиц, не объединенных связями. Мы подробно рассмотрим пример такого запроса, а заодно и работу с запросами перечисленных типов.

Пример сложного запроса

Как вы помните, в объединенном банке данных содержатся три базы данных. Все они имеют различное происхождение. БД ЧЭС и Контроль ЧС непосредственно связаны с оперативной информацией о всевозможных чрезвычайных ситуациях (ЧС). Следовательно, вполне естественна такая постановка задачи: получить из этих двух баз данных единую выборку сведений о ЧС определенного типа (скажем, происшедших в конкретном регионе).

В том, что таблицы этих БД не соединены связями, нет никакого скрытого подвоха. Конечно, разное происхождение баз данных наложило отпечаток на их структуру: записи из различных БД построены неодинаково, отличаются по составу и формату полей. Все это осложняет работу пользователя. В принципе многие таблицы из разных БД достаточно легко объединить с помощью связей. Однако в каждой базе данных есть свои словари, на которых должны основываться важнейшие таблицы (об этом шла речь в главе 3), поэтому коды одних и тех же понятий могут не совпадать. Информация в базах данных может дублироваться (дата возникновения ЧС, регион и т. д.). Таким образом, связи между обеими БД не реализованы отнюдь не по принципиальным, а скорее по методическим причинам. Но интеграция возможна и в этих условиях. Мы хотели показать читателю, что система Access 2002 позволяет преодолевать серьезные трудности, даже если иногда они создаются несколько искусственно.

Итак, приступим к решению поставленной задачи. Оно включает по крайней мере три последовательных этапа:

• выборка данных из одной таблицы (обычно выбирать записи по каким-либо критериям не нужно, поэтому можно взять исходную таблицу целиком). Назовем этот этап – запрос на выборку;

• создание таблицы, в которую будут сведены записи из различных исходных таблиц, – запрос на создание таблицы;

• добавление в новую таблицу записей из следующей (следующих) таблицы (таблиц) – запрос на добавление записей.

Операцию выборки мы уже изучили выше. Теперь рассмотрим по отдельности второй и третий этапы, а затем всю процедуру объединения записей в комплексе.

Запрос на выборку

В конечном счете полученная выборка должна содержать поля из таблиц Fiie1 и ES_OPER. В исходном виде эти таблицы содержат сотни и тысячи записей. Поэтому, чтобы не оперировать с очень большими массивами информации (что, впрочем, неизбежно, если надо создать единый банк данных из разнородных информационных структур), введем, как мы уже это делали, дополнительные критерии, позволяющие отфильтровать информацию.

Сначала сформируйте новый запрос на выборку. Он должен указывать те поля, которые вы хотите скопировать в создаваемую таблицу. Как и в предыдущих разделах книги, запрос будет построен с помощью конструктора. Все операции, связанные с созданием запроса, вам уже знакомы. Итак, введите в него все поля таблицы ES_OPER, а также условия отбора: в поле Текст сообщения — составной критерий (*Тюменск* AND * нефтепровод*) – рис. 11.36.

Рис. 11.36

Теперь с помощью кнопки

проверьте, правильно ли производится отбор (см. рис. 11.37). Убедившись в этом, можете формировать запрос на создание таблицы.

Рис. 11.37

Щелкните по стрелке прокрутки справа от кнопки

(Тип запроса) на панели инструментов (см. окно, показанное на рис. 11.36). Активизируйте режим Запрос на создание таблицы. После этого Access 2002 попросит вас назвать таблицу. Назовите ее просто Выборка1 (см. рис. 11.38).

Рис. 11.38

Запрос на выборку будет автоматически преобразован в запрос на создание таблицы, как показано на рис. 11.39. Как легко убедиться, по своей структуре он полностью совпадает с запросом, показанным на рис. 11.36, различаются лишь названия этих запросов. Если теперь вы дадите команду выполнить этот запрос, то во вкладке Таблицы окна базы данных появится таблица Выборка1. Ее содержание полностью соответствует тому, что вы видели на рис. 11.37. Остается реализовать вторую часть задачи: сформировать и выполнить запрос на добавление записей в таблицу.

Рис. 11.39

Запрос на объединение разнородных таблиц в одну таблицу

Такой запрос позволит добавить в уже имеющуюся таблицу новые записи из другой таблицы. Существенно, что таблицы могут быть как похожими, так и различными по структуре; они могут иметь неодинаковое количество полей с разными именами. Как мы уже знаем, чтобы включить новые данные в таблицу, надо сначала создать и выполнить обычный запрос на выборку, а затем указать, в какие именно поля какой таблицы следует поместить поля с новыми записями.

Снова запрос на выборку

Создайте запрос на выборку из таблицы Fiie1 и укажите в нем условия отбора записей. По структуре эта таблица отличается от таблицы ES_OPER. В частности, основная текстовая информация таблицы Fiie1 содержится в поле Характеристика ЧС. Поэтому условия отбора данных в запросе, который вы создаете, будут отличаться от критериев, введенных для таблицы ES_OPER. Поскольку необходимо отфильтровать записи об авариях на нефтепроводах Тюменской области, в запросе на выборку введите в поле Регион выражение *Тюменск*, а в поле Характеристика ЧС — Нефтепровод* (неизменяемые части слов – с учетом того, что говорилось выше о возможности употребления слова в разных падежах). Сформированный запрос показан на рис. 11.40.

Рис. 11.40

С помощью кнопки

выполним этот запрос и получим выборку из таблицы Fiie1, содержащую две записи. Она включает 5 полей, интересующих нас в этой таблице (рис. 11.41).

Рис. 11.41

Таким образом, наша задача состоит в том, чтобы объединить в одной таблице записи из таблиц на рис. 11.37 и 11.41, имеющих разную структуру. Напомним, что состав полей в этих таблицах отобран нами из всего множества содержащихся в них полей.

Теперь надо выполнить запрос на создание таблицы. Мы выполнили его немного раньше, в результате чего имеем таблицу Выборка1.

Задайте тип запроса. Пусть это будет запрос на добавление. На экране вновь появится окно Добавить. В нем следует выбрать опцию Присвоить имя таблице. Так как вы уже вводили ее имя на предыдущем этапе, просто щелкните по стрелке прокрутки и в открывшемся списке укажите позицию Выборка1 (рис. 11.42).

Рис. 11.42

Затем щелкните по кнопке ОК, и на экране возникнет окно Запрос на добавление (рис. 11.43). Перед тем как дать команду на его выполнение, обязательно укажите, в какое поле таблицы-получателя Выборка1 надо поместить данные из соответствующего столбца таблицы ES_OPER.

Рис. 11.43

Как вы помните, эти две таблицы различны по структуре, а также по набору и формату полей. Поэтому соответствие полей обеих таблиц определяет пользователь индивидуально для каждой ситуации. В данном случае – согласно табл. 11.1, где в левом столбце представлены поля, которые мы хотим включить в итоговую объединенную таблицу, а в правом – те столбцы из таблицы ES_OPER, которые должны «поставлять» информацию в объединенную таблицу. Таблица 11.1

Поля, не имеющие аналогов в правом столбце табл. 11.1, следует ввести в таблицу Выборка1 вручную (если они изначально в этой таблице отсутствуют – в нашем случае – поле Текст сообщения). Это знакомая нам корректировка структуры таблицы с помощью конструктора таблиц показана на рис. 11.44. Если поле в столбце таблицы Выборка1 имеет аналог в правом столбце, это означает, что информация из данного поля в таблице ES_OPER включается в соответствующее поле таблицы Выборка1.

Рис. 11.44

С учетом всего сказанного правила построения запроса на добавление (на примере рис. 11.43) таковы:

• базовой таблицей для запроса на добавление является дополнительная (в отличие от основной, на которой построена таблица Выборка1 . В данном случае такой дополнительной таблицей является ES_OPER, а основной – File1;

• в качестве полей в запрос включаются только те дополнительные поля, которых не хватает в таблице Выборка1 для формирования в ней объединенной информации. В данном случае – поля Дата ЧС, Виды ЧС, Текст сообщения, Населенный пункт;

• в графе запроса Добавление указываются те поля в таблице Выборка1 , куда заносится информация из отобранных полей дополнительной таблицы (ES_OPER).

Теперь, когда введены все необходимые поля и готовый запрос на добавление (рис. 11.43), осталось только щелкнуть по кнопке

В результате выполнения запроса на экране появится предупреждение о том, что в таблицу Выборка! будет включено еще 11 отобранных записей (рис. 11.45) в дополнение к тем двум записям, которые были получены на первом шаге из таблицы Fiie1 (см. рис. 11.41).

Рис. 11.45

Итоговая таблица с объединенной информацией показана на рис. 11.46.

Рис. 11.46

Итак, вы убедились, что Access 2002 позволяет объединять сведения из таблиц с разной структурой записей. Это очень важно в практической работе.

Данный текст является ознакомительным фрагментом.