Алгоритм выполнения многотабличного запроса

Рассмотрим порядок выполнения многотабличного запроса на примере запроса, объединяющего данные из двух различных таблиц (см. Рис. 4.3). Допустим, что требуется вывести список всех заказов, включая номер и стоимость заказа, фамилию и имя клиента. Перечисленные данные содержатся в следующих таблицах:

– Номер (ID_ORDER) и Стоимость (PRICE) заказа содержатся в таблице ZAKAZY;

– Имя клиента (COMPANY) и лимит кредита (LIMIT_CREDIT) содержатся в таблице CLIENTY .

Рассмотрим умозрительный порядок выполнения данного заказа.

1. Сначала построим результирующую таблицу, содержащую четыре, перечисленные выше колонки (ID_ORDER, COMPANY, PRICE, LIMIT_CREDIT).

2. Найдите в таблице ZAKAZY Номер и Стоимость первого заказа (первой записи) и перепишите полученные значения в поля ID_ORDER и PRICE результирующей таблицы.

3. Запомните Номер клиента (ID_CLN) для первой записи таблицы ZAKAZY.

4. Перейдите к таблице CLIENTY и в столбце ID_CLN найдите значение, соответствующее запомненному значению поля ID_CLN для первой записи таблицы ZAKAZY.

5. Отыщите Имя клиента и Лимит кредита для найденной записи таблицы CLIENTY и перепишите их в поля COMPANY и LIMIT_CREDIT результирующей таблицы.

6. Таким образом, мы создали одну строку результирующей таблицы. Далее повторите шаги 2 - 5 до тех пор, пока не будут перечислены все заказы.

В данном алгоритме можно зафиксировать два важных момента:

– Каждая строка результирующей таблицы формируется из пары строк: одна строка находится в таблице ZAKAZY, а другая - в таблице CLIENTY .

– Любая пара строк определяется по совпадению значений ключевых полей.

 

Рис. 4.3 - Алгоритм выполнения многотабличного запроса