ВВЕДЕНИЕ В СИСТЕМЫ УПРАВЛЕНИЯ БАЗАМИ ДАННЫХ


Использование имен корреляции (алиасов, псевдонимов)


Иногда приходится выполнять запросы, в которых таблица соединяется сама с собой, или одна таблица соединяется дважды с другой таблицей. При этом используются имена корреляции (алиасы, псевдонимы), которые позволяют различать соединяемые копии таблиц. Имена корреляции вводятся в разделе FROM и идут через пробел после имени таблицы. Имена корреляции должны использоваться в качестве префикса перед именем столбца и отделяются от имени столбца точкой. Если в запросе указываются одни и те же поля из разных экземпляров одной таблицы, они должны быть переименованы для устранения неоднозначности в именованиях колонок результатирующей таблицы. Определение имени корреляции действует только во время выполнения запроса.

Пример 19. Отобрать все пары поставщиков таким образом, чтобы первый поставщик в паре имел статус, больший статуса второго поставщика:

SELECT P1.PNAME AS PNAME1, P1.PSTATUS AS PSTATUS1, P2.PNAME AS PNAME2, P2.PSTATUS AS PSTATUS2 FROM P P1, P P2 WHERE P1.PSTATUS1 > P2.PSTATUS2;

В результате получим следующую таблицу:

PNAME1

PSTATUS1

PNAME2

PSTATUS2

Иванов 4 Петров 1
Иванов 4 Сидоров 2
Сидоров 2 Петров 1

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

Номер контрагента

NUM

Наименование контрагента

NAME

1 Иванов
2 Петров
3 Сидоров

Таблица 3 Отношение CONTRAGENTS

Номер детали

DNUM

Наименование детали

DNAME

1 Болт
2 Гайка
3 Винт

Таблица 4 Отношение DETAILS (Детали)

Номер поставщика

PNUM

Номер получателя

CNUM

Номер детали

DNUM

Поставляемое количество

VOLUME

1 2 1 100
1 3 2 200
1 3 3 300
2 3 1 150
2 3 2 250
3 1 1 1000

Таблица 5 Отношение CD (Поставки)

В таблице CD (поставки) поля PNUM и CNUM являются внешними ключами, ссылающимися на потенциальный ключ NUM в таблице CONTRAGENTS.




Начало  Назад  Вперед