|
Программирование >> Sql: полное руководство
Вывести список всех служащих и их руководителей. SELECT EMPS.NAME, MGRS.NAME FROM SALESREPS EMPS, SALESREPS MGRS WHERE EMPS.MANAGER = MGRS.EMPL NUM
В предложении 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-приложений, в приложениях, предназначенных для поддержки принятия решений, запрос, как правило, обращается ко многим таблицам и использует сложные отношения, существующие в базе данных В этих приложениях результаты запроса часто нужны для принятия важных решений, поэтому вполне приемлемыми считаются запросы, которые выполняются несколько минут или даже несколько часов Вот типичные для учебной базы данных запросы, связанные с принятием решений: пользователь вводит название офиса, и программа выдает список двадцати пяти самых больших заказов, принятых служащими этого офиса (запрос к трем таблицам); в отчете суммируются продажи каждого служащего по типам товаров и показывается, какой служащий какие товары продал (запрос к трем таблицам); руководитель рассматривает возможность открытия нового офиса в Сиэтле и выггрлняет запрос для анализа заказов, клиентов, товаров и служащих (запрос к чеТъгрем ыблицам)
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |