Запросы всех названных типов могут не только использоваться по прямому назначению, но и быть частью более сложных, комплексных запросов. Предположим, вам необходимо получить выборку записей из таблиц, не объединенных связями. Мы подробно рассмотрим пример такого запроса, а заодно и работу с запросами перечисленных типов.
Пример сложного запроса
Как вы помните, в объединенном банке данных содержатся три базы данных. Все они имеют различное происхождение. БД ЧЭС и Контроль ЧС непосредственно связаны с оперативной информацией о всевозможных чрезвычайных ситуациях (ЧС). Следовательно, вполне естественна такая постановка задачи: получить из этих двух баз данных единую выборку сведений о ЧС определенного типа (скажем, происшедших в конкретном регионе).
В том, что таблицы этих БД не соединены связями, нет никакого скрытого подвоха. Конечно, разное происхождение баз данных наложило отпечаток на их структуру: записи из различных БД построены неодинаково, отличаются по составу и формату полей. Все это осложняет работу пользователя. В принципе многие таблицы из разных БД достаточно легко объединить с помощью связей. Однако в каждой базе данных есть свои словари, на которых должны основываться важнейшие таблицы (об этом шла речь в главе 3), поэтому коды одних и тех же понятий могут не совпадать. Информация в базах данных может дублироваться (дата возникновения ЧС, регион и т. д.). Таким образом, связи между обеими БД не реализованы отнюдь не по принципиальным, а скорее по методическим причинам. Но интеграция возможна и в этих условиях. Мы хотели показать читателю, что система Access 2002 позволяет преодолевать серьезные трудности, даже если иногда они создаются несколько искусственно.
Итак, приступим к решению поставленной задачи. Оно включает по крайней мере три последовательных этапа:
• выборка данных из одной таблицы (обычно выбирать записи по каким-либо критериям не нужно, поэтому можно взять исходную таблицу целиком). Назовем этот этап – запрос на выборку;
• создание таблицы, в которую будут сведены записи из различных исходных таблиц, – запрос на создание таблицы;
• добавление в новую таблицу записей из следующей (следующих) таблицы (таблиц) – запрос на добавление записей.
Операцию выборки мы уже изучили выше. Теперь рассмотрим по отдельности второй и третий этапы, а затем всю процедуру объединения записей в комплексе.
Запрос на выборку
В конечном счете полученная выборка должна содержать поля из таблиц Fiie1 и ES_OPER. В исходном виде эти таблицы содержат сотни и тысячи записей. Поэтому, чтобы не оперировать с очень большими массивами информации (что, впрочем, неизбежно, если надо создать единый банк данных из разнородных информационных структур), введем, как мы уже это делали, дополнительные критерии, позволяющие отфильтровать информацию.
Сначала сформируйте новый запрос на выборку. Он должен указывать те поля, которые вы хотите скопировать в создаваемую таблицу. Как и в предыдущих разделах книги, запрос будет построен с помощью конструктора. Все операции, связанные с созданием запроса, вам уже знакомы. Итак, введите в него все поля таблицы ES_OPER, а также условия отбора: в поле Текст сообщения — составной критерий (*Тюменск* AND * нефтепровод*) – рис. 11.36.
Рис. 11.36
Теперь с помощью кнопки
проверьте, правильно ли производится отбор (см. рис. 11.37). Убедившись в этом, можете формировать запрос на создание таблицы.
Щелкните по стрелке прокрутки справа от кнопки
(Тип запроса) на панели инструментов (см. окно, показанное на рис. 11.36). Активизируйте режим Запрос на создание таблицы. После этого Access 2002 попросит вас назвать таблицу. Назовите ее просто Выборка1 (см. рис. 11.38).