- •7 Мова структурованих запитів sql Лабораторна робота №7
- •7.1 Керуючі оператори (команди) Jet sql (Access)
- •Завдання. Частина 1.
- •7.3 Запити мовою Jet sql на селекцію (вибірку та об’єднання) даних
- •7.5 Структуровані запити та підзапити
- •7.5.1 Підзапити з оператором порівняння
- •7.5.2 Підзапити з предикатом in (Not In)
- •7.5.5 Підзапити, що починаються з операторів порівняння та ключових слів any або all
- •7.6 Лабораторна робота №7. Частина 3. Завдання
- •7.5.6 Підзапити, які починаються з exists або not exists
Завдання. Частина 1.
Ознайомитися з прикладами керуючих операторів.
7.3 Запити мовою Jet sql на селекцію (вибірку та об’єднання) даних
Лабораторна робота №7. Частина 2. Завдання
Обрахувати аудиторне навантаження за видами занять викладачів кафедри №5 у 2-му триместрі.
Підрахувати кількість дисциплін циклу „3” у 4-му триместрі.
Яка кафедра має найбільший обсяг дисциплін у навчальному плані?
Дисципліни 5-го триместру з найменшим обсягом аудиторних годин (лекційні+групові+лабораторні) у триместрі.
Середнє значення обсягів дисциплін по циклах.
7.5 Структуровані запити та підзапити
7.5.1 Підзапити з оператором порівняння
Розглянемо, наприклад, задачу складання списку всіх викладачів, що мають мінімальну норму навантаження (ми не знаємо коду чи назви посади, що має мінімальну норму). За допомогою з’єднань цю задачу можна було б виконати в два прийоми.
1. Знайти мінімальну норму навантаження.
SELECT MIN(NormPost)
FROM POSADA;
Min-NormPost |
600 |
2. Одержати прізвища викладачів, які мають таку норму.
SELECT VYKLADACH.PrizvVykl, POSADA.PostVykl, POSADA.NormPost
FROM VYKLADACH, POSADA
WHERE price = 600;
Якщо зробити це з допомогою підзапиту, то нам буде потрібно тільки один оператор:
SELECT VYKLADACH.PrizvVykl, POSADA.PostVykl, POSADA.NormPost
FROM VYKLADACH INNER JOIN POSADA ON VYKLADACH.KodPost = POSADA.KodPost
WHERE (((POSADA.NormPost)=(select MIN(NormPost) from POSADA)));
7.5.2 Підзапити з предикатом in (Not In)
Запит – знайти усіх викладачів, які мають усі ті посади, що є на кафедрі №2 .
SELECT VYKLADACH.PrizvVykl, VYKLADACH.NomKaf, VYKLADACH.KodPost
FROM VYKLADACH
WHERE ((( VYKLADACH.KodPost) In (select KodPost from VYKLADACH where NomKaf=2)));
PrizvVykl |
NomKaf |
KodPost |
Бандур М.М. |
6 |
02 |
Сірко В.В. |
7 |
02 |
Опришко Ю.Й. |
2 |
02 |
Батура О.Й. |
6 |
02 |
Балагура А.М. |
2 |
04 |
Черно Ф.М. |
2 |
04 |
А якщо треба, щоб в результатній таблиці не було викладачів кафедри №2, то
SELECT VYKLADACH.PrizvVykl, VYKLADACH.NomKaf, VYKLADACH.KodPost
FROM VYKLADACH
WHERE ((( VYKLADACH.NomKaf)<>2) AND (( VYKLADACH.KodPost) In (select KodPost from VYKLADACH where NomKaf=2)));
PrizvVykl |
NomKaf |
KodPost |
Бандур М.М. |
6 |
02 |
Сірко В.В. |
7 |
02 |
Батура О.Й. |
6 |
02 |
Запит – знайти усіх викладачів, які мають посади, яких немає на кафедрі №2 .
SELECT VYKLADACH.PrizvVykl, VYKLADACH.NomKaf, VYKLADACH.KodPost
FROM VYKLADACH
WHERE ((( VYKLADACH.KodPost) Not In (select KodPost from VYKLADACH where NomKaf=2)));
PrizvVykl |
NomKaf |
KodPost |
Середа І.С. |
6 |
01 |
Мунтян Р.Д. |
7 |
01 |
Турчак А.Д. |
12 |
03 |
Махно Н.Є. |
7 |
01 |
Собчак А.О. |
12 |
01 |
