Хомоненко А.Д., Цыганков В.М., Мальцев М.Г. - Базы данных. Учебник для высших учебных заведений (6-е изд.) - 2009 (1084484), страница 98
Текст из файла (страница 98)
В этом случае будет добавлена пустаястрока перед помеченной.В качестве критерия отбора может выступать сложное выражение, включающее не только поля таблиц, но также переменные и выражения. Для формирования подобных выражений может использоваться построитель выражений Expression Builder, который вызывается при выборе элемента<Expression...> (<выражение...>) в списке Field Name (имя поля).12. СУБД Visual FoxPro8.0Организация467многотабличныхзапросовДля формирования многотабличного запроса необходимо разместить вокне Конструктора запросов все участвующие в запросе таблицы и определить условия их связи.
Вместе с таблицами в окне Конструктора запросовотображаются и их постоянные связи. Если необходимые постоянные связиотсутствуют, то с помощью вкладки Join (связь) организуются временныемежтабличные связи.Рассмотрим создание многотабличного запроса на следующем примере.Запрос 4. Необходимо получить на экране информацию о преподавателяхкафедры 25 их должностях и окладах, преподавательском стаже и надбавкеза стаж.Требуемая информация содержится в следующих трех таблицах: Т р г е р ,T dolgn, T stag. В окне Конструктора запросов уже имеется таблица Т ргер.Остальные можно добавить, например, с помощью команды Query | Add Table(запрос | добавить таблицу).
При этом в появившемся диалоговом окне AddTable or View (добавить таблицу или запрос) выбирается требуемая таблица. В результате образ таблицы появляется в окне Конструктора запросов.Если при создании БД между выбранными таблицами были установленыпостоянные связи, то они будут также представлены, во-первых, в виде линий, соединяющих соответствующие поля в образах этих таблиц (верхняячасть рис.
12.9), а во-вторых — во вкладке Join добавятся соответствующиестроки с условиями объединения таблиц.dolgnokladi£2FieldsJoin | Filter | Older By | Group By | Miscellaneous jTypeField NameNot CriteriaLogicalValueT_prep.stag|| T_prep.dolgnT_dolgn.
dolgninsertRemoveРис. 12.9. Окно многотабличного запроса с выбранной вкладкой JoinЧасть 3. Современные СУБД и их применение468Если ранее постоянных связей между выбранными таблицами установлено не было, то открывается диалоговое окно Join Condition (условие связи),служащее для установления или модификации связи (рис.
12.10). В связи стем, что в рассматриваемом примере имеются постоянные связи между выбранными таблицами, то окно Join Condition (условие связи) было вызванодвойным щелчком мыши на выбранной линии, связывающей таблицы по полюdolgn. Этот прием используется также при модификации типа связи.,,' Join ConditionT_prep. dolgn- Type of joinT_dolgn. dolgn-(• Inner join- ••С Left joinС flight joinС Full join• Description..Create a result set that includes only the T_prep records that matchT_dolgn records.OKJCancelРис.
12.10. Окно Join ConditionТип связи модифицируется или задается с помощью переключателя Туреof join (тип связи) рассматриваемого окна. В левой и правой частях окна содержатся раскрывающиеся списки полей двух таблиц, с помощью которыхвыбираются поля для связи таблиц. Будем использовать предлагаемую поумолчанию опцию Inner join.
В этом случае создается объединение, в котороевыбираются записи, которые содержат совпадающие значения в полях связи.Замечание.Для установления временных связей возможно использование любых полей таблиц без ограничений, имеющих место при установке постоянных межтабличных связей.Формированиевычисляемогополя взапросеВ качестве полей результирующей таблицы могут использоваться вычисляемые поля.
Вычисляемое поле представляет собой выражение, включающее одно или несколько полей исходной таблицы, константы и функции, соединенные операторами. Для включения в запрос вычисляемого полянеобходимо выбрать вкладку Fields Конструктора запроса и в поле Function12.
СУБД Visual FoxPro 8.0469and Expressions (функция и выражения) (рис. 12.1) ввести необходимое выражение. Далее после нажатия кнопки Add (добавить) данное выражение будет занесено в список полей запроса.Если нажать кнопку справа от поля Function and Expressions (функция ивыражения), то открывается диалоговое окно Построителя выражения —Expression Builder (рис. 12.11), упрощающего формирование выражения.Выбирая в поле From table (из таблицы) Построителя таблицу и в поле Fields(поля) — название поля, формируем требуемое выражение, которое при этомвыводится в поле Expression (выражение).
По нажатию кнопки ОК вычисляемое поле переносится в список полей запроса.Expression BuilderExpression:T_prep. dolgn + T_stag.d_stagг Functions' String:j "text"logical:иOKdCancelVerifyMath:3 pQptions.Hate:||0~3| Wate}Vajiables:rields:Ma]From table: J T_stagboxindentJmargin_padvance_pageno_pbpage_pcolnoLTJNNСNNNjjРис. 12.11. Диалоговое окно Expression BuilderРезультат выполнения многотабличного запроса с вычисляемым полем(Ехр_7) представлен на рис.
12.12.±ЖFioИванов И И.Петров П.П.Сидоров С. С.Егоров Е.Е.KafDolgn25125;преп25•доцент25; профессор|Slag| D _ * l a g | O k l a d | Екр_75]50 1000!105050 1000!10507юФ 100 2000{ 210012° 150 2500! 2650Рис. 12.12. Результат выполнения многотабличного запросаЧасть 3. Современные СУБД и их применение470Из рисунка 12.12 видно, что вычисляемому полю автоматически был присвоен заголовок (Ехр_7), который не очень содержателен. Есть возможностьизменять заголовки полей в запросе. Д л я этого в поле Function andExpressions (функция и выражения) Конструктора запроса к названию формируемого ноля добавляется ключевое слово AS и новый заголовок.Сохраним результаты запроса в файле Query4.QPR.ПримерысложногоупорядоченияданныхВ качестве примера сложного упорядочения данных рассмотрим созданиеследующего запроса.Запрос 5.
Организовать выборку сведений о преподавателях со стажемработы от 5 до 10 лет. Сведения упорядочить по виду занятия и фамилии преподавателя.Выборка информации должна осуществляться из всех четырех таблиц.Нам необходимо организовать сложный запрос, позволяющий упорядочить выбранные сведения сначала по видам занятий, а затем по фамилии преподавателя. Для этого во вкладке Order By (упорядочение) в список OrderingCriteria (критерий упорядочения) необходимо занести сначала поле VidZan,а затем Fio. Для задания выборки по заданному диапазону преподавательского стажа укажем во вкладке Filter его нижнюю (5 лет) и верхнюю (10 лет)границы.Подготовим запрос следующим образом.1. Создадим новый запрос с помощью команды File | New (файл | создать).2.
Добавим в окно Конструктора запроса все таблицы БД.3. На вкладке Fields (поля) занесем в список Selected fields (выбранныеполя) выбираемые поля: T Prep.Fio, T P r e p . S t a g , T_Zagr.VidZan,T Z a g r . Gruppa.4. На вкладке Filter (фильтр) зададим условия отбора записей. Для этого всписке Field Name (имя поля) укажем поле, по которому будет осуществляться выборка, — T Prep.Stag. В списке Criteria (критерий) выберем оператор сравнения Between (между), задающий условия выборки.В поле столбца Example (пример) введем через запятую начальную иконечную границы выборки 5, 10.5.
Зададим условия упорядочения записей. Для этого выберем вкладкуOrder By (упорядочение) и в список Ordering Criteria (критерий упорядочения) внесем последовательно поля T Zagr.VidZan и T_Prep.Fio (рис.12.13).12. СУБД Visual FoxPro 8.0Fields | Join | Filter471Order By | Group By ] Miscellaneous |Selected fields:Ordering criteria:t T^zagr.yidzant T_prep.fioL^agrci.ruppaT_prep.stagOrder options —(* Ascendingj Jj С DescendingРис. 12.13. Выборка со сложным упорядочиванием данныхДля выполнения запроса нажмем кнопку Run (выполнить).ПредставлениерезультатовзапросовВ рассмотренных примерах результат запроса представлялся в табличномвиде на экране.
Между тем, результат запроса можно запомнить во вновь созданной таблице или файле, преобразовать в отчет или направить на принтер. Чтобы реализовать одну из перечисленных возможностей, достаточновыполнить команду Query | Query Destination (запрос | назначение запроса) и в появившемся диалоговом окне Query Destination (назначение запроса) (рис. 12.14) нажат!» нужную кнопку (табл.
12.11).V,.' Q u e r y D e s t i n a t i o nOutput destinations:ШBrowseCursorTableGraphScreenReportLabelTable name: j.. \росоЫе\таблица, dbfOKРис. 12.14. Диалоговое окно Query DestinationCancelЧасть 3. Современные СУБД и их применение472Таблица 12.11Кнопки выбора варианта представления результата запросаКнопкаНазначениеBROWSEП р о с м о т р результатов в окне BrowseCURSORВ р е м е н н о е х р а н е н и е результата з а п р о с а для п р о с м о т р аTABLEСохранение в виде таблицыGRAPHСоздание диаграммы с помощью M S GraphSCREENВывод результатов выборки в активном окнеREPORTПредставление в виде отчетаLABELПредставление в виде этикеткиРезультаты всех реализованных ранее запросов представлялись в окнеBrowse (просмотр) — по умолчанию, нажата кнопка Browse (просмотр). Привыборе этого режима создается временная таблица, которая и выводится вокне Browse (просмотр).