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

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

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