Смекни!
smekni.com

Розробка складних інформаційно-пошукових систем (стр. 4 из 5)

SELECT DISTINCTROW читач.Прізвище, читач.[Ім”я], книга.Назва

FROM [читач]INNER JOIN (книга INNER JOIN абонемент ON книга.[Код книги]=абонемент.[Код книги]ON читач.[КОд читача]=абонемент.[Код читача]

WHERE (((книга.Назва)=[Введіть назву книги]));

3) Який факультет очолює такий-то декан ?

SELECT DISTINCTROW факультет.[Повна назва], факультет.[Керівник підрозділу]

FROM факультет

WHERE (((факультет.[Керівник підрозділу])=[Введіть прізвище декану]));

4) Знайти всіх студентів, які навчаються на такому-то курсі.

SELECT DISTINCTROW читач.[Код читача], читач.Прізвище, читач.[Ім”я], читач.Курс

FROM [читач]

WHERE (((читач.Курс)=[Введіть курс]));

5) Знайти назви книг та місця, де вони були видані, якщо роки їх видання з

такого-то по такий-то рік.

SELECT DISTINCTROW [видавництво-книга].[Рік видання], книга.Назва, книга.Автор, видавництво.[Назва видавництва], видавництво.місто

FROM книга INNER JOIN (видавництво INNER JOIN [видавництво-книга] ON видавництво. [Код видавництва]=[видавництво-книга].[Код видавництва] ON книга.[Код книги]=[видавництво-книга].[Код книги]

WHERE ((([видавництво-книга].[Рік видання]) BETWEEN [Введіть перший рік випуску] AND [Введіть останній рік випуску]));

6) За номером відділу знайти його повну назву та бібліотекаря, який там

працює.

SELECT DISTINCTROW бібліотекар.Прізвище, відділ.[Код відділу], відділ.Назва

FROM відділ INNER JOIN (бібліотекар INNER JOIN [бібліотекар-відділ] ON бібліотекар.[Код бібліотекаря]=[бібліотекар-відділ].[Код бібліотекаря]) ON відділ.[Код відділу]=[бібліотекар-відділ].[Код відділу]

WHERE ((( відділ.[Код відділу])=[Введіть номер відділу]));

7) Знайти всі книжки, які не знаходяться у такому-то відділі.

SELECT DISTINCTROW книга.Назва, книга.Автор

FROM книга INNER JOIN (відділ INNER JOIN [відділ-книга] ON відділ.[Код відділу]=[відділ-книга].[Код відділу]) ON книга.[Код книги]=[відділ-книга].[Код книги]

WHERE (((відділ.Назва)<>[Введіть назву відділу]))

GROUP BY книга.Назва, книгаюАвтор;

8) Знайти коди всіх тих читачів, які прнаймі читали книгу з кодом 6.

SELECT DISTINCTROW читач.[Код читача]

FROM абонемент INNER JOIN [читач] ON читач.[Код читача]=абонемент.[Код читача]

WHERE EXISTS

(SELECT книга.[Код книги]

FROM абонемент книга

WHERE абонемент.[Код книги]=книга.[Код книги]

AND книга.[Код книги]=6);

9) Знайти всіх читачів, що на даний момент тримають 5 книжок.

SELECT DISTINCTROW читач.Прізвище, читач.[Ім”я], факультет.[Номер факультету], COUNT (абонемент.[Код книги]) AS [COUNT_Код книги]

FROM (факультет INNER JOIN [читач] ON факультет.[Номер факультету]=читач.Факультет) INNER JOIN (книга INNER JOIN абонемент ON книга.[Код книги]=абонемент.[Код книги] ON читач.[Код читача]=абонемент.[Код читача]

GROUP BY читач.Прізвище, читач.[Ім”я], факультет.[Номер факультету]

HAVING (((COUNT (абонемент.[Код книги]))=5));

10) Знайти всі книги, що були видані у видавництві такому-то.

SELECT DISTINCTROW книга.Назва, книга.Автор

FROM книга INNER JOIN (видавництво INNER JOIN [видавництво-книга] ON видавництво.[Код видавництва]=[видавництво-книга].[Код видавництва]) ON книга.[Код книги]=[видавництво-книга].[Код книги]

WHERE (((видавництво.[Назва видавництва])=[Введіть назву видавництва]))

GROUP BY книга.Назва, книга.Автор;

11) Запит на видалення. З таблиці “боржники” видаляються записи про читачів,

якщо відмічено, що вони повернули взяті книги та від дня їх повернення до

поточного дня пройшло більше 20 днів, тобто, як зазначалось раніше, ще 20

днів після повернення книги бувший боржник обслуговуватись не буде.

DELETE DISTINCTROW DATE()-[Дата повернення] AS Вираз1, боржники.[Код читача] AS Вираз2, боржники.[Код книги] AS Вираз3, боржники.[Дата взяття] AS Вираз4, боржники.[Дата повернення] AS Вираз5, боржники.[Повернення книги]

FROM боржники

WHERE (((DATE()-[Дата повернення])>20 AND ((боржники.[Повернення книги])=YES));

11) Запит на додавання. Перевіряється таблиця “абонемент”. Якщо там є читачі, які тримають книгу більше 13 днів, то вони заносяться список боржників.

INSERT INTO боржники([Дата взяття книги],[Код книги],[Код читача])

SELECT DISTINCTROW абонемент.[Дата взяття книги] AS Вираз1, абонемент.[Код книги] AS Вираз2, абонемент.[Код читача] AS Вираз3

FROM абонемент

WHERE ((( DATE()-[Дата взяття книги])>13));

12) Запит на оновлення. Для боржника, який здав книгу, робиться помітка про здачу.

UPDATE DISTINCTROW [читач] INNER JOIN боржники ON читач.[Код читача]=боржники.[КОд читача]

SET боржники.[Повернення книги]=YES

WHERE ((([читач].[Прізвище]&” “&[Ім”я]=[Введіть прізвище та ім”я]));

13) Запит на створення таблиці. Створюється таблиця”куча”, в яку заносяться дані про назву книги, яка знаходиться у другому відділі і випущена в 1992 або 1993 роках.

SELECT DISTINCTROW відділ.[Код відділу], книга.Назва, [видавництво-книга].[Рік видання] INTO [куча]

FROM [книгаї INNER JOIN [видавництво-книга] ON кинга.[Код кинги]=[видавництво-книга].[Код книги]) INNER JOIN (відділ INNER JOIN [відділ-книга] ON відділ.[Код відділу]=[відділ-книга].[Код відділу]) ON книга.[Код книги]=[відділ-книга].[Код книги]

WHERE (((відділ.[Код відділу])=2 AND (([видавництво-книга].[Рік видання])=1992 OR ([видавництво-книга].[Рік видання])=1993));

14) Знайти всіх читачів, що читали принаймі всі ті книжки, що і читач Федосова.

Спочатку створюється підзапит, який видає множину всіх книг, що читає Федосова.

SELECT DISTINCTROW читач.Прізвище, книга.Назва

FROM [читач] INNER JOIN ( книга INNER JOIN абонемент ON книга.[Код книги]=абонемент.[Код книги]) ON читач.[Код читача]=абонемент.[Код читача]

WHERE (((читач.Прізвище)=”Федосова”));

Тепер створюється головний запит на основі підзапиту (sub1).

SELECT DISTINCTROW читач.Прізвище, читач.[Ім”я], книга.Назва

FROM [читач] INNER JOIN (( SUB1 INNER JOIN книга ON SUB1.Назва=книга.Назва) INNER JOIN абонемент ON книга.[Код книги]=абонемент.[Код книги]) ON читач.[Код читача]=абонемент.[Код читача]

Засоби інтерфейсу.

Для створеної бази даних розроблені інтефейсні засоби, які дозволяють працювати з нею і звичайному користувачеві. При запуску програми на екрані перед користувачем в першу чергу з”являється головна форма з шістью управляючими кнопками. Також вгорі екрану замість стандартного меню з”являється власноручно створене меню. В деяких моментах воно дублює форму, тобто з нього можна безпосередньо вибирати ті ж дії, що і по натисненню кнопки в формі, але має і свої відмінності, завдяки чому ним можна порадити користуватися більш досвідченим користувачам.


Отже, головне меню має 5 пунктів – File, View, Edit, Window, Help. Меню File має такі підменю:nNew, SaveAs, PrintTools, PrintPreview, Print. Підменю nNew має ще один рівень вкладеності – ми можемо вибрати, що створювати: нову таблицю, форму, запит, макрос, звіт, або, взагалі, нову базу даних. Велика увага приділяється роздруковуванню матеріалів. В пункті PrintTools можна встановити параметри друку. Інший пункт меню – View.Можна вибрати, що продивлятись: таблиці, форми, запити, звіти. Після вибору відповідного пункту відкривається форма, яка дозволяє робити наступний вібір, подаючи відповідно список існуючих таблиць, форм, запитів, звітів.Крім форми, яка виводить список таблиць для подальшого перегляду,


всі інші форми можна викликати натиснувши відповідні кнопки на меню-формі– “Перегляд інформації” – виводиться список існуючих форм,


“Запити”- список існуючих запитів,


“Звіт” – список звітів.


В меню View є ще один пункт Tools для встановлення різноманітних параметрів системи. Наступний пукт меню Edit повністю аналогічний за результатом вибору натисненню на кнопку меню-форми “Редагування інформації”. Після його вибору з”являється інша форма, яка пропонує певні розділи інформації для редагування.


За власним вибором можна занести або вилучити якісь відомості про читачів, книги, працівників бібліотеки та ін. Наступний пункт меню – Window. За його допомогою можна поміняти розташування вікон на екрані: Tile, Cascade, Hide, Unhide. Останній пукт меню – Help – при його виборі запускається стандартна допога.

Меню-форма є, можливо, більш зручнішою для користування звичайними користувачами, оскільки вона є більш наочною. Так, натискаючи послідовно кнопки “Перегляд інформації” та наступні запропоновані розділи, можна продивитись майже всю інформацію, яка є в таблицях. Наприклад:

“Перегляд інформації” -> “бібліотекарі”:


Поле6
Поле8 Поле10 Поле12 ПолеСоСписком14
Ярошниченко Т.Я. 45 25 вища 1
Мирошниченко Я.Т. 40 15 вища 2
Фощенко Т.Т. 35 10 вища 3

Поле для кода бібліотекаря є списком, вибираючи з якого певний код можна відразу ж побачити всі записи про даного бібліотекаря (це зроблено за допомогою функції DlookUp). Дані в цю форму заносяться з таблиці, проте в більшість розроблених форм дані заносяться із запитів.


Прізвище
Ім"я Повна назва Курс
Пархоменко Олена Департамент комп"ютерних технологій 3
Комарницька Людмила Департамент комп"ютерних технологій 3
Підгорний Свєтослав Департамент комп"ютерних технологій 3
Федосова Наталя Департамент комп"ютерних технологій 3
Тарнавська Олена Департамент комп"ютерних технологій 3
Бубенщиков Євген Департамент комп"ютерних технологій 3
Сиворакша Сергій Департамент комп"ютерних технологій 3
Овдій Юрій Департамент комп"ютерних технологій 3
Сігаєва Марина Департамент комп"ютерних технологій 3
Фіялка Світлана Департамент комп"ютерних технологій 3
Цап Ольга Департамент економічної теорії 3
Жилєвський Олександр Департамент економічної теорії 2
Жарко Тетяна Факультет правничих наук 2
Дундій Ганна Факультет гуманітарних і суспільних наук 3
Галабурда Юля Факультет гуманітарних і суспільних наук 3
Сосновська Люба Факультет гуманітарних і суспільних наук 3
Вахненко Тетяна Факультет гуманітарних і суспільних наук 3
Беднова Ганна Факультет гуманітарних і суспільних наук 3
Медвєдєва Соломія Факультет природничих наук 3
Іванова Тетяна Школа соціальної роботи 1

Дана форма дає відомості про студентів. За допомогою кнопок на формі можна передивлятися всі записи. В таблиці “читач” не має запису про назву факультету, де навчається студент, а лише номер факультету, тому для виведення його в форму разом з іншими відомостями був написаний запит.