Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Соединение при условии неравенства.




Если условие соединения содержит только операцию равенства, говорят, что это соединение при условии равенства или эквивалентное соединение. Если же в условии соединения используется любая другая операция сравнения, соединение называют соединением при условии неравенства.

В качестве примера соединения при условии неравенства следующий запрос соединяет два экземпляра таблицы Employees (Сотрудники) для формирования уникальных пар сотрудников:

SELECT

E1.empid, E1.firstname, E1.lastname,

E2.empid, E2.firstname, E2.lastname

FROM HR.Employees AS E1

JOIN HR.Employees AS E2

ON E1.empid < E2.empid;

 

Если применить перекрестное соединение, то получили бы пары из сотрудников с одинаковыми номерами (например, 1 и 1) и, кроме того, зеркально отраженные пары (например, 1 и 2 и 2 и 1). Применение внутреннего соединения с условием соединения, говорящим о том, что значение ключа слева от операции сравнения меньше значения ключа справа, устраняет эти два неприемлемых варианта. Пары с одинаковыми номерами отбрасываются, потому что обе части равны. В случае зеркально отраженных пар только один их вариант отбирается, поскольку только в одном случае ключ слева меньше ключа справа.

 

Результат:

 

Особенности внешнего соединения.

Внешние соединения включают две стадии логической обработки, как и внутренние соединения (декартово произведение и выборка с помощью элемента ON) плюс третью свойственную только этому типу соединения стадию, названную добавлением внешних строк.

Во внешнем соединений одна таблица помечается как "сохраняемая" или главная с помощью ключевых слов left outer join, right outer join или FULL outer join, помещаемых между именами таблиц.

Ключевое слово outer не обязательно. Ключевое слово left означает, что сохраняются строки таблицы слева от ключевых слов, а слово right указывает на сохранение строк таблицы, находящейся справа от ключевых слов. Ключевое слово full означает сохранение строк обеих таблиц.

Третья стадия логической обработки запроса во внешнем соединении определяет строки из сохраняемой таблицы, для которых не найдено совпадений в другой таблице на основе предиката из элемента on. На этой стадии в результирующую таблицу, сформированную на первых двух стадиях соединения, добавляются упомянутые строки, и в них заполнителями значений атрибутов из несохраняемой таблицы соединения служат значения NULL.

 

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

 

Поделиться:





Читайте также:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...