русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

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


Дата добавления: 2015-07-09; просмотров: 922; Нарушение авторских прав


Иногда приходится выполнять запросы, в которых таблица соединяется сама с собой, или одна таблица соединяется дважды с другой таблицей. При этом используются имена корреляции (алиасы,псевдонимы), которые позволяют различать соединяемые копии таблиц. Имена корреляции вводятся в разделе 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
Иванов Петров
Иванов Сидоров
Сидоров Петров

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

Номер контрагента NUM Наименование контрагента NAME
Иванов
Петров
Сидоров

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

Номер детали DNUM Наименование детали DNAME
Болт
Гайка
Винт

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

Номер поставщика PNUM Номер получателя CNUM Номер детали DNUM Поставляемое количество VOLUME

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



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

Ответ на вопрос "кто кому что в каком количестве поставляет" дается следующим запросом:

SELECT

P.NAME AS PNAME,

C.NAME AS CNAME,

DETAILS.DNAME,

CD.VOLUME

FROM

CONTRAGENTS P,

CONTRAGENTS C,

DETAILS,

CD

WHERE

P.NUM = CD.PNUM AND

C.NUM = CD.CNUM AND

D.DNUM = CD.DNUM;

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

Наименование поставщика PNAME Наименование получателя CNAME Наименование детали DNAME Поставляемое количество VOLUME
Иванов Петров Болт
Иванов Сидоров Гайка
Иванов Сидоров Винт
Петров Сидоров Болт
Петров Сидоров Гайка
Сидоров Иванов Болт

Замечание. Этот же запрос может быть выражен очень большим количеством способов, например, так:

SELECT

P.NAME AS PNAME,

C.NAME AS CNAME,

DETAILS.DNAME,

CD.VOLUME

FROM

CONTRAGENTS P,

CONTRAGENTS C,

DETAILS NATURAL JOIN CD

WHERE

P.NUM = CD.PNUM AND

C.NUM = CD.CNUM;



<== предыдущая лекция | следующая лекция ==>
Отбор данных из нескольких таблиц | Использование агрегатных функций с группировками


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.876 сек.