Соединения по неэквивалентности
Таблица JOB_GRADES
определяет диапазон значений LOWEST_SAL
и HIGHEST_SAL
для каждого GRADE_LEVEL
. Поэтому, столбец GRADE_LEVEL
может использоваться, чтобы присвоить классы каждому сотруднику.

Соединение по неэквивалентности является условием соединения, содержащим что-либо другое, кроме оператора равенства.
Отношение между таблицей EMPLOYEES
и таблицей JOB_GRADES
является примером соединения по неэквивалентности. Столбец SALARY
в таблице EMPLOYEES
располагается между значениями в столбцах LOWEST_SAL
и HIGHEST_SAL
таблицы JOB_GRADES
. Поэтому, каждый сотрудник может классифицироваться на основе зарплаты. Отношение получается с использованием любого оператора, кроме оператора равенства (=).
Получение Записей с Соединениями по Неэквивалентности

Пример на рисунке создает соединение по неэквивалентности, чтобы оценить класс зарплаты сотрудника. Зарплата должна быть между любой парой низшего и высшего диапазонов зарплаты.
Важно отметить, что все сотрудники появляются в точности один раз, когда этот запрос выполняется. Никакой сотрудник не повторяется в списке. Есть две причины этого:
Ни одна из строк в таблице рабочей категории не содержит классы, которые перекрываются. Таким образом, значение зарплаты для сотрудника может находиться только между наименьшим и наибольшим значениями зарплаты одной из строк в таблице классов зарплаты.
Все зарплаты сотрудников лежат внутри пределов, которые обеспечиваются таблицей рабочей категории. Таким образом, никакой сотрудник не зарабатывает меньше, чем самое низкое значение, содержащееся в столбце
LOWEST_SAL
, или больше, чем самое высокое значение, содержащееся в столбцеHIGHEST_SAL
.
Отметьте: Другие условия (такие как <=
и >=
) могут использоваться, но BETWEEN
является самым простым. Не забудьте указать сначала наименьшее значение, а потом наибольшее при использовании условия BETWEEN
. Сервер Oracle преобразовывает условие BETWEEN
к паре условий AND. Поэтому использование BETWEEN
не имеет никаких выигрышей в производительности, но его следует использовать для логической простоты.
Табличные псевдонимы были определены в примере на рисунке по причинам производительности, а не из-за возможной неоднозначности.