Программирование >>  Sql: полное руководство 

1 ... 42 43 44 [ 45 ] 46 47 48 ... 264


Вывести список всех служащих и их руководителей.

SELECT EMPS.NAME, MGRS.NAME

FROM SALESREPS EMPS, SALESREPS MGRS WHERE EMPS.MANAGER = MGRS.EMPL NUM

EMPS.NAME

MGRS.NAME

Tom Snyder

Dan Roberts

Bill Adams

Bob Smith

Dan Roberts

Bob Smith

Paul Cruz

Bob Smith

Mary Jones

Sam Clark

Bob Smith

Sam Clark

Larry Fitch

Sam Clark

Sue Smith

Larry Fitch

Nancy Angelli

Larry Fitch

В предложении from для каждой копии таблицы salesreps назначается псевдоним. Это осуществляется следующим образом: псевдоним ставится непосредственно после действительного имени таблицы. Как видно из примера, если в предложении from содержится псевдоним таблицы, то в полной ссылке на столбец должен использоваться псевдоним, а не действительное имя таблицы. Конечно, на самом деле в этом запросе необходимо применять псевдоним только для одной из двух копий таблицы. Запрос вполне можно записать так:

SELECT SALESREPS.NAME, MGRS.NAME FROM SALESREPS, SALESREPS MGRS WHERE SALESREPS.MANAGER = MGRS.EMPL NUM

Здесь псевдоним mgrs присваивается только одной копии таблицы, а для другой используется собственное имя таблицы. Вот еще два примера самообъединения:

Вывести список служащих, планы которых превышают планы их руководителей.

SELECT SALESREPS.NAME, SALESREPS.QUOTA, MGRS.QUOTA

FROM SALESREPS, SALESREPS MGRS

WHERE SALESREPS.MANAGER = MGRS.EMPL NUM

AND SALESREPS.QUOTA > MGRS.QUOTA

SALESREPS.NAME SALESREPS.QUOTA MGRS.QUOTA

Bill Adams $350,000.00 $200,000.00

Dan Roberts $300,000.00 $200,000.00

Paul Cruz $275,000.00 $200,000.00

Mary Jones $300,000.00 $275,000.00

Larry Fitch $350,000.00 $275,000.00

Вывести список служащих, которые работают со своими руководителями в различных офисах, включая имена и офисы как огужащих, так и руководителей.

SELECT EMPS.NAME, EMP OFFICE.CITY, MGRS.NAME, MGR OFFICE.CITY FROM SALESREPS EMPS, SALESREPS MGRS, OFFICES EMP OFFICE, OFFICES MGR OFFICE WflERE EMPS.REP OFFICE = EMP OFFICE . OFFICE



AND MGRS.REP OFFICE = MGR OFFICE.OFFICE

AND EMPS.MANAGER = MGRS.EMPL NUM

AND EMPS.REP OFFICE О MGRS.REP OFFICE

EMPS.NAME

Bob Smith Bill Adams Larry Fitch

EMP OFFICE.CITY

Chicago Atlanta Los Angeles

Nancy Angelli Denver

MGRS.NAME MGR OFFICE.CITY

Sam Clark New York

Bob Smith Chicago

Sam Clark New York

Larry Fitch Los Angeles

Псевдонимы таблиц

Как уже было сказано в предыдущем параграфе, псевдонимы таблиц необходимы в запросах, включающих самообъединения. Однако псевдоним можно использовать в любом запросе (например, если запрос касается таблицы другого пользователя или если имя таблицы очень длинное и употреблять его в полных именах столбцов утомительно). Следующий запрос ссылается на таблицу birthdays, принадлежащую пользователю по имени sam:

Вывести список имен, плановых объемов продаж и дней рождения служащих.

SELECT SALESREPS.NAME, QUOTA, SAM.BIRTHDAYS.BIRTH DATE FROM SALESREPS, BIRTHDAYS WHERE SALESREPS.NAME = SAM.BIRTHDAYS.NAME

Если вместо имен двух таблиц использовать псевдонимы s и в, то и вводить, и читать этот запрос будет легче:

Вывести список имен, плановых объемов продаж и дней рождения служащих.

SELECT S.NAME, S.QUOTA, B.BIRTH DATE FROM SALESREPS S, SAM.BIRTHDAYS В WHERE S.NAME = B.NAME

Ha рис. 7.10 изображена стр>ктура предложения from для многотабличной инструкции select, содержащей псевдонимы таблиц. Это предложение выполняет две важные функции.

В предложении from перечислены все таблицы, из которых извлекаются данные. Любой столбец, указанный в инструкции select, должен принадлежать одной из таблиц, заданных в предложении from. (Имеется исключение для внешних ссылок, содержащихся в подчиненном запросе. Оно рассматривается в главе 9.)

Предложение from содержит метку таблицы, которая в инструкции select используется для идентификации таблицы в полном имени столбца. Если в предложении from вводится псевдоним таблицы, то он становится ее меткой; в противном случае меткой становится имя таблицы в том виде, в каком оно присутствует в предложении from.

Единственное требование, предъявляемое к меткам таблиц в предложении from, состоит в том, что все они должны отличаться друг от друга. Стандарт SQL2 допускает вставку ключевого слова аз- между именем и псевдонимом таблицы. Хотя это ключевое слово облегчает чтение предложения from, оно поддерживается не во всех СУБД.



FROM

-имя таблицы

псевдоним таблицы -

Рис 7 10. Шнтаксичвская диаграаррвДпож&Ш1 FROM

Производительность при обработке многотабличных запросов

с увеличением количества таблиц в запросе резко возрастает объем работы, необходимой для выполнения запроса В самом SQL нет ограничений на число таблиц, объединяемых в одном запросе. Но некоторые СУБД ограничивают число таблиц, чаще всего восемью На практике высокие затраты на обработку многотабличных запросов во многих приложениях накладывают еще более сильные ограничения на количество таблиц

В приложениях, предназначенных для оперативной обработки транзакций (OLTP), запрос обычно ссылается только на одну или две таблицы В этих приложениях время ответа является критичной величиной - пользователь, как правило, вводит один или два элемента данных, и ему требуется получить ответ от базы данных в течение одной или двух секунд Вот некоторые типичные OLTP-запросы для учебной базы данных

пользователь вводит в какую-нибудь форму идентификатор клиента, и СУБД выводит на экран лимит кредита, состояние счета и другие данные об этом клиенте (запрос к одной таблице);

пользователь с помощью специального устройства сканирует с упаковки номер товара, и СУБД выводит на экран наименование и цену товара (запрос к одной таблице);

пользователь вводит имя служащего, и профамма выдает список текущих заказов, принятых данным служащим (запрос к двум таблицам)

В отличие от OLTP-приложений, в приложениях, предназначенных для поддержки принятия решений, запрос, как правило, обращается ко многим таблицам и использует сложные отношения, существующие в базе данных В этих приложениях результаты запроса часто нужны для принятия важных решений, поэтому вполне приемлемыми считаются запросы, которые выполняются несколько минут или даже несколько часов Вот типичные для учебной базы данных запросы, связанные с принятием решений:

пользователь вводит название офиса, и программа выдает список двадцати пяти самых больших заказов, принятых служащими этого офиса (запрос к трем таблицам);

в отчете суммируются продажи каждого служащего по типам товаров и показывается, какой служащий какие товары продал (запрос к трем таблицам);

руководитель рассматривает возможность открытия нового офиса в Сиэтле и выггрлняет запрос для анализа заказов, клиентов, товаров и служащих (запрос к чеТъгрем ыблицам)



1 ... 42 43 44 [ 45 ] 46 47 48 ... 264

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика