Не-эквисоединения

Достаточно часто возникает ситуация, когда необходимо получить информацию из разных таблиц, причем ни один столбец таблицы не соответствует в точности ни одному столбцу другой таблицы. Например (Рисунок 2), таблица EMP содержит столбец SAL, представляющий собой заработную плату сотрудников. Таблица SALGRADE состоит из строк, определяющих нижнюю и верхнюю границы заработной платы для каждого разряда. Чтобы выяснить разряд каждого сотрудника, необходимо составить многотабличный запрос, сравнивающий колонку SAL таблицы EMP с колонками LOSAL и HISAL таблицы SALGRADE. Точного соответствия между значениями этих колонок нет, поэтому условие соединения должно включать операторы сравнения, отличные от оператора равенства (<, <=, >, >=, BETWEEN).

Рисунок 2 Несвязанные таблицы

SQL> SELECT e.ename, e.job, e.sal, s.grade

2 FROM emp e, salgrade s

3 WHERE e.sal>=s.losal AND e.sal<=s.hisal;

ENAME JOB SAL GRADE

---------- --------- --------- ---------

SMITH CLERK 800 1

ADAMS CLERK 1100 1

JAMES CLERK 950 1

WARD SALESMAN 1250 2

MARTIN SALESMAN 1250 2

MILLER CLERK 1300 2

ALLEN SALESMAN 1600 3

TURNER SALESMAN 1500 3

JONES MANAGER 2975 4

BLAKE MANAGER 2850 4

CLARK MANAGER 2450 4

SCOTT ANALYST 3000 4

FORD ANALYST 3000 4

KING PRESIDENT 5000 5

14 rows selected.