10.01.2017 Views

sql

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

СУБД Oracle не поддерживает ключевое слово AS.<br />

Для того чтобы использовать псевдонимы в СУБД Oracle, просто укажите их без<br />

ключевого слова AS (т.е. укажите Customers С вместо Customers AS С).<br />

Нет также ничего плохого в том, что псевдонимы таблиц используются только во время<br />

выполнения запроса. В отличие от псевдонимов столбцов, псевдонимы таблиц никогда не<br />

возвращаются клиенту.<br />

Использование объединений других типов<br />

До сих пор вы использовали только простые объединения, которые называют внутренние<br />

объединения или объединения по эквивалентности. Теперь мы рассмотрим три<br />

дополнительных типа объединения: самообъединение, естественное объединение и<br />

внешнее объединение.<br />

Самообъединения<br />

Одна из основных причин для использования псевдонимов таблиц состоит в возможности<br />

обращения к одной и той таблице несколько раз в одном операторе SELECT. Покажем это<br />

на примере.<br />

Предположим, вы хотите послать письма по всем контактным адресам клиентов, которые<br />

работают с той же компанией, с которой работает Джим Джонс. Такой запрос требует,<br />

чтобы вначале вы выяснили, с какой компанией работает Джим Джонс, а затем — какие<br />

клиенты работают с этой же компанией. Вот один из способов решения этой задачи.<br />

ВВОД<br />

SELECT cust_id, cusC_name, cust_contact<br />

FROM Customers<br />

WHERE cust_name = (SELECT cust_name<br />

FROM Customers<br />

WHERE cust_contact = 'Jim Jones');<br />

ВЫВОД<br />

cust_id cust_name cust_contact<br />

1000000003 Fun4All Jim Jones<br />

1000000004 Fun4All Denise L. Stephens<br />

АНАЛИЗ<br />

В первом решении используются подзапросы. Внутренний оператор SELECT выполняет<br />

простую выборку, чтобы возвратить имя компании (cust_name), с которой работает Джим<br />

Джонс. Только это имя используется в предложении WHERE внешнего запроса, так что<br />

выбираются имена всех служащих, работающих с этой компанией. (Все о подзапросах<br />

читайте в уроке 11, "Использование подзапросов".<br />

Теперь рассмотрим тот же самый запрос, в котором используется объединение.<br />

ВВОД<br />

SELECT cl.cust_id, cl.cust_name, cl.cust_contact<br />

FROM Customers AS cl, Customers AS c2<br />

WHERE cl.cust_name = c2.cust_name<br />

AND c2.cust_contact = 'Jim Jones';<br />

ВЫВОД<br />

cust_id cust_name cust_contact<br />

1000000003 Fun4All Jim Jones<br />

1000000004 Fun4All Denise L. Stephens

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!