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

1 ... 38 39 40 [ 41 ] 42 43 44 ... 264


Larry Fitch Paul Cruz Nancy Angelli

LOS Angeles Western Chicago Eastern

Denver Western

Таблица salesreps (потомок) содержит столбец rep office, который является внешним ключом для таблицы offices (предок). Здесь отношение предок/потомок используется с целью поиска в таблице office для каждого служащего соответствующей строки, содержащей город и регион, и включения ее в результаты запроса.

Таблица OFFICES

OFFICE

REGION

TARGET

SALES

Denver

Western

$300,000.00

$186,042.00

New York

Eastern

$575,ООО.00

$692,637.00

Chicago

Eastern

$800,000.00

$735.042.00

Atlanta

Eastern

$350,000.00

$367,911.00

tAngeles

Western

$725,000.00

$835,915.00

Таблица SALE


EHPL NUH

105 109 102 106 104 101 110 108 103 107

NAME

Bill Adams Mary Jones Sue Smith Sarn Clarl< Bob Smith Dan Roberts Tom Snyder Larry Fitch Paul Cruz Nancy Ange11 i


TITLE

Sales Rep Sales Rep Sales Rep VP Sales Sales Hgr Sales Rep Sales Rep Sales Mgr Sales Rep Sales Rep

Результаты запроса

NAME

CITY

REGION

Phid 7.3. Запросе испопьзованнем отношения предок/потомок мв>ту таблицами OFFXGEBкSALESREPS

Вот еще один запрос к этим же двум таблицам, но здесь роли предка и потомка меняются (рис. 7.4):

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

SELECT CITY, NAME, TITLE FROM OFFICES, SALESREPS WHERE MGR = EMPL NUM

CITY

NAME

TITLE

Chicago

Atlanta

New York

Denver

Los Angeles

Bob Smith Sales Mgr

Bill Adams Sales Rep

Sam Clark VP Sales

Larry Fitch Sales Mgr

Larry Fitch Sales Mgr

Таблица offices (потомок) содержит столбец mgr, представляющий собой внешний ключ для таблицы salesreps (предок). Это отношение используется здесь, чтобы для каждого офиса найти в таблице salesreps соответствующую строку, содержа1цую имя и должность руководителя, и включить ее в результаты запроса.



Таблица SALESREPS

EHPLNUH

NAME

REP OFFICE

TITLE

Bill Adams

Sales Rep

Mary Jones

Sales Rep

Sue Smith

Sales Rep

Sam Clark

VP Sales

Bob Smith

Sales Hgr

Dan Roberts

Sales Rep

Tom Snyder

NULL

Sales Rep

Larry Fitch

Sales Hgr

Taul Cruz

Sales Rep

NnteyAnge 11 i

Sales Rep

Таблица OFF I CI


Результаты запроса

OFFICE

CITY \

REGTmi

TARGET

Denver

Western

$300,000.00

New York

EaMern

$575,000.00

Chicago

Easteoi

$800,000.00

Atlanta

Eastern

$350,000.00

Los Angeles

Western

$725,ООО. 00

CITY

NAHE

TITLE

Рис. 7.4. Другой запрос с использованием отношения предок/потомокЗйржду табтцами OFFICES и SALEsMpS ~ 4 -

В SQL не требуется, чтобы связанные столбцы были включены в результаты многотабличного запроса. На практике они чаще всего и не включаются, как это было в двух предыдущих примерах. Это связано с тем, что первичные и внешние ключи, как правило, представляют собой идентификаторы (такие как идентификатор офиса или идентификатор служащего в приведегшых примерах), которые человеку трудно запомнить, тогда как соответствующие названия (города, районы, имена, должности) запомнить гораздо легче. Поэтому вполне естественно, что в предложении where для объединения двух таблиц используются идентификаторы, а в предложении select для создания столбцов результатов запроса - более удобные для восприятия имена.

Условия для отбора строк

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

Вывести список офисов, в которых план продаж превышает $600000.

SELECT CITY, NAME, TITLE FROM OFFICES, SALESREPS WHERE MGR = EMPL NUM

AND TARGET > 600000.00

CITY

NAME

TITLE

Chicago Los Angeles

Bob Smith Larry Fitch

Sales Mgr Sales Mgr



Вследствие применения дополнительного условия отбора число строк в таблице результатов запроса уменьшилось. Согласно первому условию (mgr=empl num) из таблиц offices и salesreps отбираются пары строк, которые имеют соответствую-шее отношение предок/потомок; согласно второму условию производится дальнейший отбор только тех пар строк, где плановый объем продаж превышает $60 0000.

Несколько связанных столбцов

Таблицы orders и products в учебной базе данных связаны парой составных ключей. Столбцы mfr и product в таблице orders вместе образуют внешний ключ для таблицы products и связаны с ее столбцами mfr id и product id соответственно. Чтобы объединить таблицы на основе такого отношения предок/потомок, необходимо задать обе пары связанных столбцов, как показано в данном примере:

Вывести список всех заказов, в том числе их стоимости и описания товаров.

SELECT 0RDER NUM, AMOUNT, DESCRIPTION FROM ORDERS, PRODUCTS WHERE MFR = MFR ID

AND PRODUCT = PRODUCT ID

order num

AMOUNT

DESCRIPTION

113027

S4,104

Size 2 Widget

112992

S760

Size 2 Widget

113012

S3,745

Size 3 Widget

112968

S3,978

Size 4 Widget

112963

S3,276

Size 4 Widget

112983

S702

Size 4 Widget

113055

$150

Widget Adjuster

113057

$600

Widget Adjuster

Условие отбора в данном запросе показывает, что связанными парами строк таблиц orders и products являются те, в которых пары связанных столбцов содержат одни и те же значения Объединения посредством нескольких столбцов распространены меньше, чем объединения посредством одного столбца, и обычно встречаются в запросах с составными внешними ключами, как в приведенном выше примере.

Запросы на выборку к трем и более таблицам

SQL позволяет объединять данные из трех или более таблиц, используя ту же самую методику, что и для объединения данных из двух таблиц Вот простой пример объединения трех таблиц:

Вывести список заказов стоимостыо выше $25000, включая имя служащего, принявшего заказ, и имя клиента, сделавшего его.

SELECT 0RDER NUM, AMOUNT, COMPANY, NAME FROM ORDERS, CUSTOMERS, SALESREPS WHERE CUST = CUST NUM



1 ... 38 39 40 [ 41 ] 42 43 44 ... 264

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