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

Зазначимо, що на практиці більш часто вирішуються задачі, що потребують даних, які зберігаються у кількох Таблицях бази даних і пройшли певну обробку.

У синтаксисі інструкції SELECT (див. Розділ 3, стр. 18) у реченні FROM допускається введення кількох таблиць, це означає, що можна створювати запити, що використовують дані кількох таблиць. Такі запити прийнято називати: “багатотабличними запитами”. Зазначимо, що у багатотабличних запитах, для таблиць бази даних можна використовувати псевдоніми.

5.2.1. Правило встановлення відповідності записів, що вибираються із різних Таблиць

Зазначимо, що просте перечислення Таблиць у реченні FROM відповідає реляційній операції декартового об’єднання, за допомогою якого число відібраних записів із вказаних Таблиць значно зростає і не відповідає вимогам користувача.

Тому потрібно вказувати правило встановлення відповідності об’єднання записів із різних таблиць.

Часто таким правилом може бути співпадання значень ключових полів. Вказане правило умови вибору відповідних даних з двох Таблиць (наприклад, імена таблиць будуть А та В) схематично можна представити наступним чином:

SELECT *

FROM А,В

WHERE a# =b#;

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

Розглянемо приклади:

Вибірка більше ніж з однієї таблиці

Приклад 1. Розв’яжемо задачу: “Підготувати дані про результати тестування перших трьох груп автомобілів, якщо тестування проводили контролери, прізвища яких починаються на літери від А до П, а коди частин двигуна, у яких виявлено несправності, можуть приймати значення 1, 2, 3”.

Для зручності викладу спочатку запишемо всю інструкцію, а потім розглянемо основні принципи побудови останньої.

SQL-інструкція для вирішення вказаної задачі може бути записана наступним чином:

SELECT [Результати тестування].[Код_автомобіля], [Довідник несправностей].Назва_несправності, [Результати тестування].[Код_несправності#], [Результати тестування].Довідка, [Результати тестування].[Код_системи_двигуна#], [Контролер].Пр

FROM [Контролер] INNER JOIN ([Довідник несправностей] INNER JOIN [Результати тестування] ON [Довідник несправностей].[Код_несправності#] = [Результати тестування].[Код_несправності#]) ON Контролер.[Код контролера] = [Довідник несправностей].Контролер

WHERE ((([Результати тестування].Код_автомобіля)<4) AND (([Результати тестування].[Код_системи_двигуна#])<4) AND ((Контролер.Пр)<"Р*"));

Результат відбору даних надано у наступній таблиці:

Код_автомобіля

Назва_несправності

Код несправності#

Довідка

Код_системи_двигуна

Контролер

1

Перегрівання двигуна

5

05.08.2010

1

Іваненко А. А.

1

Перегрівання двигуна

5

01.09.2010

1

Іваненко А. А.

2

Перегрівання двигуна

5

01.09.2010

2

Іваненко А. А.

2

Перегрівання двигуна

5

05.08.2010

2

Іваненко А. А.

2

Збільшення витрат масла

3

01.05.2010

1

Іванчук К. І.

3

Збільшення витрат масла

3

01.05.2010

1

Іванчук К. І.

Пояснення до задачі:

  • В запиті дані відбираються із трьох таблиць [Довідник несправностей] , [Результати тестування], [Контролер].

  • Відібрані записи використовують для формування результуючої таблиці.

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

[Довідник несправностей].[Код_несправності#]=[Результати тестування].[Код_несправності#].

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

  • Для нашого прикладу всі “додаткові” умови вибору виконуються одночасно і тому можуть бути записані наступним чином:

((([Результати тестування].Код_автомобіля)<=3) AND (([Довідник несправностей].Контролер)<"Р*") AND (([Результати тестування].[Код_системи_двигуна#])<4));

  • Як зазначалось раніше, вказані умови повинні виконуватись одночасно з основними умовами вибору відповідних записів із таблиць.

Об’єднання основних та “додаткових” умов логічним AND утворює предикат, який записуємо у реченні WHERE.

Якщо дані вибираються із двох (і більше) таблиць і встановлено правило відповідності вибраних записів, то говорять, що проведено операції з’єднання таблиць, а про таблиці говорять, що таблиці – є з’язаними.

Способи операцій зєднання двох таблиць передбачено у синтаксисі SELECT.

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