Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
sql.doc
Скачиваний:
41
Добавлен:
28.02.2016
Размер:
924.16 Кб
Скачать

5.3. Додатові відомості про зв’язування таблиць

В результаті зв’язування двох таблиць можуть утворюватись динамічні набори даних.

В кожній із таблиць є ключове поле. Записи в таблицях упорядковуються за значеннями ключового поля. Хоча б одна із зв’язуваних таблиць має первинний ключ. Множину значень ключів позначимо К1 та К2 відповідно для кожної із таблиць, як схематично вказано на Рис 5.3.

Рис. 5.3. Схема зв’язування таблиць

Позначимо ці множини як

К1= {k11, k12 …,k1n}, К2= {k21, k22 …,k2m}

Не завжди К1=К2, тобто необов’язково множини значень ключів співпадають. Ця обставина впливає на спосіб утворення динамічних наборів.

При утворенні динамічних наборів зв’язаних таблиць поточні записи однієї таблиці доповнюються відповідними записами другої таблиці. Нехай поточний запис таблиці1 буде позначено Р. Відповідність записів встановлюється по співпаданню значень ключа (k= k). Позначимо відповідний запис у іншій таблиці як В.

Якщо К1=К2, то поточний запис динамічного набору утворюється як об’єднання Р U В, або схематично запис динамічного набору можна представити

як показано нижч

Така ситуація описується за допомогою SQL у реченні FROM наступним чином:

FROM таблица_1 INNER JOIN таблица_2 ON таблица_1.поле_1 оператор таблица_2.поле_2,

Якщо К1К2, то говорять про зовнішнє об’єднання. При зовнішньому об’єднанні таблиць уточнюють наступне:

  1. записи якої з таблиць поповнюються відповідними записами зв’язаної таблиці;

  2. як діяти, якщо відсутній відповідний запис у зв’язаній таблиці.

Якщо при формуванні динамічного набору поповнюються записи однієї таблиці (умовимся називати її таблицяР) записами іншої таблиці, то у результуючу таблицю включаються усі записи таблиціР). Такою таблицеюР у різних ситуаціях може бути або таблиця 1 або таблиця 2. Якщо таблицеюР є таблиця 1, то говорять про створення лівого зовнішнього обєднання, бо у наших позначеннях таблиця 1 розташована зліва і у реченні FROM в аргументах записується першою

FROM таблица_1 LEFT JOIN таблица_2 ON таблица_1.поле_1 оператор таблица_2.поле_2,

Схематично запис, що утворюється при лівому зовнішньому об’єднанні можна вказати, використовуючи введені позначення, розглянувши дві ситуації:

2. Якщо відповідний запис у таблиці2 відсутній, то поточний запис формується як вказано на схемі, що подається нижче:

Якщо таблицеюР є таблиця 2 то говорять про створення правого зовнішнього об’єднання, бо у наших позначеннях таблиця 2 розташована праворуч, а у реченні FROM в аргументах записується другою

FROM таблица_1 RIGHT JOIN таблица_2 ON таблица_1.поле_1 оператор таблица_2.поле_2,

Схематично запис, що утворюється при правому зовнішньому об’єднанні можна вказати, використовуючи введені позначення, розглянувши дві ситуації:

  1. Якщо відповідний запис у зв’язаній таблиці існує, то поточний запис результуючої таблиці формується так, як схематично показано на схемі, наведеній нижче:

  1. Якщо відповідний запис у зв’язаній таблиці - відсутній, то поточний запис результуючої формується так, як схематично показано на схемі, наведеній нижче без заповнення полів, що відповідають зв’язаній таблиці.

Вкажемо аргументи операцій з’єднання у реченні FROM.

Аргумент

Опиc

таблица_1, таблица_2

Імена таблиць, записи яких належить об’єднати.

поле_1, поле_2

Імена полів. Якщо ці поля не є числовими, то повинні мати однаковий тип даних і вміщувати дані одного типу, однак, поля можуть мати різні імена.

Оператор

Любий оператор порівняння: "=," "<," ">," "<=," ">=," або "<>".

Якщо потрібно включити у результат лише записи, що мають однакові значеннях у полях зв’язку, то використовують операцію INNER JOIN.

Операції LEFT JOIN, RIGHT JOIN можуть вкладатись у операцію INNER JOIN, але не навпаки.

Поля типу МЕМО не об’єднуються.

Поле зв’язку не буде включатись у результуючу таблицю, якщо воно не включено в речення SELECT.

Щоб зв’язати кілька речень ON в JOIN, використовують наступний синтаксис:

SELECT поля

FROM таблица_1 INNER JOIN таблица_2

ON таблица_1.поле_1 оператор таблица_2.поле_1 AND

ON таблица_1.поле_2 оператор таблица_2.поле_2) OR

ON таблица_1.поле_3 оператор таблица_2.поле_3)];

Висновки:

  1. Таким чином, системи управління базами данних Access дозволяють розробити невичерпне число різноманітних запитів необхідних користувачеві.

  2. Кожному запиту на мові QBE відповідає тотожній по результатам SQL-запит , але у зворотньому порядку це незавжди вірно.

  3. SQL-запити забезпечують:

  • формування джерел даних для полів зі списком;

  • визначення обчислювальних полів;

  • фільтрацію даних.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]