Заявки, които избират данни от множество таблици - Studopedia
Когато създаваме такива заявки, избираме няколко таблици в горната част на прозореца на дизайнера на заявки. Ако релациите между таблиците са създадени в прозореца „Схема на данни“, те ще се появят в този прозорец автоматично. Сега можете да изберете полета от няколко таблици в една заявка. Има два различни вида съединения между две таблици - вътрешни и външни. Ако присъединяването е вътрешно (това сте задали), тогава записите, в които съвпадат стойностите в полетата за връзка, ще бъдат комбинирани в една заявка. Ако някой запис в една таблица няма съответстващ запис в друга таблица, тогава този запис няма да бъде включен в заявката. Външното присъединяване ще бъде обсъдено по-късно.
Създайте полета, които се изчисляват. Таблиците в базата данни (за разлика от електронните таблици) никога не съхраняват данни, които могат да бъдат изчислени от данни в таблици. В повечето случаи, защото изисква значително количество памет и забавя търсенето на необходимите данни и обработката на данните в таблици. Всички необходими изчисления се извършват в заявки, създавайки полета, които се изчисляват. За да създадете такива полета в свободна колона на дизайнера на заявки, напишете ново име на поле, знака „: “ и след това израз, който използва имената на други полета и изчислява необходимата стойност. Например, нека изчислим цената на една поръчка, ако има полетаЕдинична ценаиБрой единици. В нова колона пишем:
Цена на поръчката: [Единична цена]*[Брой единици]
Имената на полетата се изписват в квадратни скоби.
Когато пишете изрази, можете да използвате вградените функции на Access. Имената на тези функции, за разлика от Excel, не се превеждат на български, те се изписват на английски, но по смисъл мн.от които са същите като функциите на Excel. Ето някои функции:
Iif(условие; израз1; израз2) – оценява израз1, ако условието е изпълнено, и израз2, ако условието не е изпълнено (подобно на функцията IF в Excel).
DateDiff("d"; date1; date2) - изчислява разликата между две дати в дни. Ако първият аргумент е“m” – разликата в датата се изчислява в месеци, ако“y” - в години.
Пълен списък на всички функции може да бъде намерен в прозореца на Expression Builder.
2.2.1 Нека създадем заявка, която избира и обединява записи от две таблици -Книги иChitBooks, за да покаже кои книги са били раздадени на читателите. Нека създадем изчисляемо поле с име Наказателна ставка, която се таксува за всяка книга, която не е върната навреме. Неустойката е 1% от стойността на книгата за всеки просрочен ден. Нека създадем заявка с имеList1. За да създадете заявкаList1, отидете в разделаQueriesи изберете бутонаNew. Добавете таблициКниги иCheatBooks към заявката. Прозорецът на схемата на данните трябва да показва връзката между таблиците чрез полеInv# - инвентарен номер на книгата. Плъзнете в долната половина на прозореца полетата, които искате да включите в заявката:Автор, Заглавие, Цена, Inv#, Дата на издаване, Дата на връщане, NB.Последното поле ще бъде необходимо за свързване на заявката към таблицатаЧитатели. В първата свободна колона в долната част на прозореца създайте поле, което се изчислява, нареченоНаказание. За да направите това, въведете в горния ред (където се намира името на полето) следния текст:
Наказание: iif([Дата на връщане]>Дата(); DateDiff("d"; [Дата на връщане]; Дата())*0,01*[Цена]; 0).
Можете да използватеКонструктора на изрази, за да създадете такъв израз.КъмЗа да направите това, щракнете върху бутонаBuildв лентата с инструменти. ПрозорецътКонструктор на изрази се отваря на екрана.В този прозорец израз се създава чрез последователно добавяне на полета от таблици или заявки, функции, константи и оператори към него (Фигура 13). Имената на полетата се изписват в квадратни скоби.


Фигура 14. Резултат от заявката List1
2.2.2 Нека създадем последната заявка за множество таблици. Изчислете за всеки читател броя на наличните книги, общата им цена и неустойката, която се начислява за книгите на този читател.


2.2.3 Създайте заявка за търсене на записи, които нямат свързан списък в друг списък. Такива искания се наричат "Записи без подчинени". За да създадете такива заявки, трябва да промените типа присъединяване към таблица на външен. При този тип свързване всички записи от първата таблица задължително се включват в заявката и към тях се добавят полета от втората таблица, ако втората таблица има запис, за който стойностите на свързаните полета съвпадат. Ако във втората таблица няма такъв запис, тогава към записа от първата таблица се добавят полета с празни стойности. Външно съединение в дизайнера на таблица е представено от линия със стрелка.
Например, нека създадем списък с книги, които не се дават на читатели. Заявката ще включва две таблициКниги иCheatBooks. Включете в заявката полетатаInv#, Cipher, Author, Titleот таблицатаBooks иInv#от таблицаCheatBooks. Намерете онези записи, които присъстват в таблицаBooks и липсват в таблицаCheatBooks. Нека променимПараметрите на присъединяването.Необходимо е да създадетеВъншно присъединяване.За да направите това, щракнете двукратно върху линията за връзка между таблиците. В диалоговия прозорец изберете втория тип - „Комбинирайте ВСИЧКИ записи от „Книга“ и само онези записи от „CheatBook“, където свързаните полета съвпадат“. Вече създадохте външно съединение, което включва всички книги в таблицатаКниги. За онези книги, които нямат записи от таблицатаCheatBooks, стойността е зададена на ‘Null’, следователно за полетоInv#от таблицатаCheatBooks задаваме следните параметриУсловие за избор-Is Null иDisplayлипсва.

![]() |
Фигура 18. Задаване на опции за сливане

Не намерихте това, което търсихте? Използвайте търсачката: