<атрибут лівого табличного виразу> ::= <ім’я атрибута із таблиць, визначених в опції FROM>
< атрибут правого табличного виразу > ::= <ім’я атрибута із таблиць, визначених в опції FROM>
<ім’я атрибута із таблиць, визначених в опції FROM> ::= <ім’я атрибута> | <ім’я таблиці або запиту >.<ім’я атрибута> | [<ім’я таблиці або запиту >] .[<ім’я атрибута>]
Увага! В останньому правилу символи “[“ та “]” використовуються як термінальні символи граматичної конструкції, а не як метасимволи граматики, що задається розширеними формами Бекуса-Наура, в яких вони вказують на необов’язковість елемента, що знаходиться в таких дужках.
Як видно із граматики, атрибут може задаватися як своїм ім’ям, так із уточненням, до якої таблиці він належить. Якщо в запиті задіяна всього одна таблиця, то уточнення не потрібно. При кількох таблицях також можна не вказувати уточнення для атрибутів, що є унікальними, але для запобігання помилок краще давати повні імена атрибутів, тобто разом з назвою таблиці.
З врахуванням вищенаведеного запит на отримання списку викладачів та їх посад в Jet SQLзадається таким чином (структуру і вміст таблиць див. вище):
SELECT TCHS.NmTh,POST.NmPs
FROM TCHS INNERJOIN POSTON TCHS.CdPs=POST.CdPs;
а теж саме для кафедри №7 так:
SELECT TCHS.NmTh,POST.NmPs
FROM TCHS INNERJOIN POSTON [TCHS].[CdPs]=[POST].[CdPs]
WHERE CdCf=7;
Результати цих запитів наведені вище. Тепер наведемо результати першого запиту при використанні лівого (замість INNER використаємо LEFT) та правого (замість INNER використаємо RIGHT) з’єднань.
Після LEFT JOIN Після RIGHT JOIN
NmTh |
NmPs |
NrNv |
NmTh |
NmPs |
NrNv |
|
Середа І.С. |
професор |
600 |
Середа І.С. |
професор |
600 |
|
Бандура В.М. |
доцент |
700 |
Мунтян Р.Д. |
професор |
600 |
|
Мунтян Р.Д. |
професор |
600 |
Бандура В.М |
доцент |
700 |
|
Сірко В.В. |
доцент |
700 |
Сірко В.В. |
доцент |
700 |
|
Оприско Ю.Й. |
доцент |
700 |
Оприско Ю.Й. |
доцент |
700 |
|
Колчак А.Д. |
старший викладач |
750 |
||||
викладач |
800 |
В таблицях-результатах сірим кольором відмічені поля, які не визначені, точніше – визначені як поля, що мають значення Null (ніщо). Це значення можна використовувати для знаходження „невідповідностей” між таблицями, що зв’язуються (див. лабораторну роботу №4). Продемонструємо це ще раз. Спочатку знайдемо в таблиці TCHS знайдемо рядки, в яких TCHS значення атрибута CdPs, яких немає в таблиці POST, і таким чином, між ними не може бути встановлено режим посилальної цілісності.
SELECT TCHS.CdTh, TCHS.NmTh, TCHS.CdPs, TCHS.CdCf
FROM TCHS LEFT JOIN POST ON TCHS.CdPs = POST.CdPs
WHERE (((POST.CdP) Is Null));s
Результат наведено нижче.
CdTh |
NmTh |
CdPs |
CdCf |
17 |
Колчак А.Д. |
05 |
12 |
Тепер знайдемо в таблиці POST TCHS знайдемо рядки, в яких є такі значення атрибута CdPs, яких немає в таблиці TCHS.
SELECT POST.CdPs, POST.NmPs, POST.NrNv
FROM TCHS RIGHT JOIN POST ON TCHS.CdPs = POST.CdPs
WHERE (((TCHS.CdPs) Is Null));
Результат наведено нижче.
CdPs |
NmPs |
NrNv |
03 |
старший викладач |
750 |
04 |
викладач |
800 |
9.2 Розрахункові поля
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.