|
Программирование >> Sql: полное руководство
AND REP = EMPL NUM AND AMOUNT > 25000.00 ORDER NUM 112987 113069 113045 112961 AMOUNT COMPANY NAME $27,500.00 $31,350.00 $45,000.00 $31,500.00 Acme Mfg. Chen Associates Zetacorp J.P. Sinclair Bill Adams Paul Cruz Larry Fitch Sam Clark Как видно из рис. 7.5, в этом запросе используются два внешних ключа таблицы \ orders. Столбец cust является внешним ключом для таблицы Customers; он свя-узывает каждый заказ с клиентом, сделавшим его. Столбец rep является внешним ключом для таблицы salesreps, связывая каждый заказ со служашчм, принявшим его. Проще говоря, запрос связьшает каждый заказ с соответствующим клиентом и служащим. Таблица CUSTOMERS Таблица SALESREPS
Таблица ORDERS Результаты запроса
Рис. 75. Запрос К:трт таблицам А вот еще один запрос к трем таблицам, в котором используется другая комбинация отношений предок/потомок: Вывести список заказов стоимостью выше $25000, включая имя клиента, сделавшего заказ, и имя служащего, закрепленного за этим клиентом. SELECT ORDER NUM, AMOUNT, COMPANY, NAME FROM ORDERS, CUSTOMERS, SALESREPS WHERE CUST = CUST NUM AND CUST REP = EMPL NUM AND AMOUNT > 25000.00 ORDER NUM AMOUNT COMPANY 112987 $27,500.00 Acme Mfg. NAME Bill Adams 113069 113045 112961 $ 31,350.00 $45,000.00 $31,500.00 Chen Associates Zetacorp J.P. Sinclair Paul Cruz Larry Fitch Sam Clark Ha рис. 7 6 изображены отношения, используемые в приведенном запросе. В первом отношении снова используется столбец сизт из таблицы orders в качестве внешнего ключа для таблицы customers. Во втором отношении используется столбец cust rep из таблицы customers в качестве внешнего ключа для таблицы salesreps Проше говоря, данный запрос связывает каждый заказ с клиентом, а каждого клиента - с закрепленным за ним служащим. Таблица SALESREPS EHPL NUH NAME CJ05) 109 102 Bill Adams Hary Jones le Smith AGE REP OFFICE 13 11 21 Таблица CUSTOMERS
Таблица ORDERS Результаты запроса
Рис. 7.6. Запрос к трем таблицам с каскадным использованией отношений предок/потомок между таблицами - В промышленных приложениях нередко встречаются запросы к трем или четырем таблицам. Даже в рамках маленькой учебной базы данных, состоящей из пяти таблиц, нетрудно создать запрос к четырем таблицам, имеющий реальный смысл Вывести список заказов стоимостью выше $25000, включая имя клиента, сделавшего заказ, имя закрепленного за ним служащего и офис, в котором работает этот служащий SELECT ORDER NUM, AMOONT, COMPANY, NAME, CITY FROM ORDERS, CUSTOMERS, SALESREPS, OFFICES WHERE CUST = CUST NUM AIJB CUST REP = EMPL NUM <AND REP OFFICE = OFFICE AND AMOUNT > 25000.00 order NUM AMOUNT COMPANY NAME CITY 112987 $27,500.00 113069 $31,350.00 113045 $45,000.00 112961 $31,500.00 Acme Mfg. Chen Associates Zetacorp J.P. Sinclair Bill Adams Paul Cruz Larry Fitch Sam Clark Atlanta Chicago Los Angeles New York Ha рис. 7.7 изображены отношения предок/потомок, используемые в данном запросе. Фактически, он на один шаг расширяет последовательность объединения в прсдьгдушем запросе, связывая заказ с клиентом, клиента - с закрепленным за ним служащим, а служащего - с его офисом. Таблица OFFICES
EMPL NUH NAH 10! 107 Bill Adams lary Jones Smith ДСЕ REP OFFICE Таблица CUSTOHERS
Таблица ORDERS Результаты запроса
Рис 7 7 Объединение четырех таблиц Прочие объединения таблиц по равенству Огромное множество многотабличных запросов основано на отношениях пре-Док/потомок, но в SQL не требуется, чтобы связанные столбцы представляли собой пару внешний ключ - первичный ключ . Любые два столбца из двух таблиц могут
|
© 2006 - 2025 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |