Підзапити, що починаються з операторів порівняння та ключові слова, що включають, ANY або ALL.
В іншому виді підзапитів, що не повертають або повертають кілька рядків, використовується оператор порівняння, модифікований ключовими словами ANY чі ALL. Підзапити, що починаються з модифікованого оператора порівняння, мають загальну форму наступного виду:
<Початок операторів SELECT, INSERT, UPDATE, DELETE чи підзапита WHERE> <оператор_порівняння> [ANY | ALL] (підзапит) [Кінець операторів SELECT, INSERT, UPDATE, DELETE або підзапита]
Що таке ALL і ANY. Якщо в якості прикладу скористатися оператором порівняння ">", то "> ALL" означає "більше, ніж кожне значення" (іншими словами, "більше, ніж найбільше значення"). Таким чином, "> ALL (1, 2, З)" означає "більше, ніж З". "> ANY" означає "більше, ніж, принаймні, одне значення" (іншими словами, "більше, ніж найменше значення"). Таким чином, "> ANY (1, 2, З)" означає "більше, ніж 1".
Підзапити з ключовим словом ALL.
Запит : знайти посади викладачів, що більше (за кодом, а не за семантичним значенням) самої більшої (за кодом) посади викладачів кафедри №12 (на кафедрі дві посади з кодами „01” і „03”).
SELECT TCHS.NmTh, TCHS.CdCf, TCHS.CdPs
FROM TCHS
WHERE (((TCHS.CdPs)>All (select CdPs from TCHS where CdCf=12)));
NmTh |
CdCf |
CdPs |
Балагура А.М. |
2 |
04 |
Черно Ф.М. |
2 |
04 |
Запит : знайти посади викладачів, що більше (за кодом, а не за семантичним значенням) будь якої посади викладачів кафедри №12 (на кафедрі дві посади з кодами „01” і „03”).
SELECT TCHS.NmTh, TCHS.CdCf, TCHS.CdPs
FROM TCHS
WHERE (((TCHS.CdPs)>ANY (select CdPs from TCHS where CdCf=12)));
NmTh |
CdCf |
CdPs |
Бандура В.М. |
6 |
02 |
Сірко В.В. |
7 |
02 |
Оприско Ю.Й. |
2 |
02 |
Колчак А.Д. |
12 |
03 |
Батура О.Й. |
6 |
02 |
Балагура А.М. |
2 |
04 |
Черно Ф.М. |
2 |
04 |
Порівняння ключових слів IN, ANY і ALL. Оператор "= ANY" цілком еквівалентний оператору IN. Якщо, наприклад, потрібно знайти викладачів, які мають ті ж посади, що й викладачі певної кафедри, можна скористатися або IN див. вище), або = ANY. Однак, семантика оператора "<> ANY" (чи оператор "!= ANY" залежить від синтаксису, прийнятого в конкретній системі відрізняється від оператора NOT IN. "<> ANY" означає "не = а або не = b або не = c". NOT IN означає "не =а і не=b і не= с".
Підзапити з використанням квантора EXISTS. Як увже зазначалося, сисок вибору підзапита, що починається з EXISTS, майже завжди включає "зірочку" (*). У даному випадку немає необхідності вказувати імена стовпців, оскільки ви лише виконуєте перевірку на існування (чи "неіснування") будь-яких рядків, що задовольняють зазначеним критеріям.
Приклад – отримати список викладачів кафедри №6, якщо на кафедрі є хоч один доцент (код посади – „02”.
SELECT TCHS.NmTh, POST.NmPs, POST.CdPs, TCHS.CdCf
FROM TCHS INNER JOIN POST ON TCHS.CdPs = POST.CdPs
WHERE ((CdCf=2) AND exists (SELECT * FROM TCHS where ((CdPs="02") AND (CdCf=2))));
NmTh |
NmPs |
CdPs |
CdCf |
Оприско Ю.Й. |
доцент |
02 |
2 |
Балагура А.М. |
викладач |
04 |
2 |
Черно Ф.М. |
викладач |
04 |
2 |
Згортка перехресних таблиць
Методична частина до згортки перехресних таблиць
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.