Щоб зрозуміти, як в SQL реалізуються багатотабличні запити, розглянемо простий запит , який з’єднує дані із двох різних таблиць:
55). Вивести список всіх замовлень, тобто номер і вартість замовлення, а також прізвище клієнта, який зробив це замовлення і величину наданого кредиту клієнту.
Чотири елемента даних, які необхідно отримати, зберігаються в двох різних таблицях:
В таблиці „Замовлення” міститься номер і вартість кожного замовлення, але в ній немає прізвищ клієнтів і величин наданих їм кредитів.
В таблиці „Клієнт” міститься прізвище клієнтів і дані про стан їх рахунків, але в ній немає інформації про замовлення.
Зауважимо, що між двома цими таблицями існує зв’язок: в кожному рядку стовпчика Клієнт таблиці замовлення міститься ідентифікатор клієнта, який зробив це замовлення і цей ідентифікатор відповідає значенню одного з рядків стовпчика Код_Клієнта таблиці клієнти.
Очевидно, що отримати необхідні результати, в операторі SELECT, необхідно якимось чином врахувати цей зв’язок між таблицями.
Таблиця Clients
Kod_Clienta
Prizv
…..
Credit
….
…….
.
.
.
Таблиця Zamovlennia
No_Zamovl
……
Client
……
Vartist
…
.
.
.
.
.
.
Результати запиту
No_Zamovl
Vartist
Prizv
Credit
Розглянемо, як такий запит можна виконати вручну, за допомогою ручки і паперу:
1). Спочатку намалюйте таблицю для результатів запиту, яка містить 4 стовпчики; запишіть імена стовпчиків. Потім – перейдіть до таблиці Zamovlennia і почніть із першого рядка;
2). Знайдіть в рядку для першого замовлення його номер (101) і вартість (68 грн.) і перепишіть ці значення в перший рядок таблиці результатів;
3). В рядку для першого замовлення знайдіть ідентифікатор клієнта, який зробив це замовлення (01). Перейдіть до таблиці Clients і в стовпчику Kod_Clienta знайдіть рядок з ідентифікатором клієнта 01;
4). В даному рядку таблиці Clients знайдіть прізвище клієнта (Дід) і величину його кредиту (100 грн.), та перепишіть ці значення в перший рядок таблиці результатів;
5). Це – тільки, перший рядок таблиці результатів! Верніться до таблиці Zamovlennia і повторюйте процес, починаючи з пункту 2, до тих пір, поки не переберете всі замовлення.
Насправді, СУБД може виконувати цей запит іншим способом, але як би його не виконувати, завжди будуть справедливі дві речі:
1). кожний рядок таблиці результатів запиту формується із пари рядків: один рядок – знаходиться в таблиці Zamovlennia, другий - в таблиці Clients.
2). для пошуку такої пари рядків виконується порівняння відповідних стовпчиків у цих таблицях (такі стовпчики називаються – зв’язані стовпчики).