SQL em Oracle > DML > Junção de tabelas > Junção Horizontal > Não-equi-junção
Não equi-junção entre tabelas tl_logo2.jpg

Sempre que o relacionamento entre duas tabelas é obtido por um operador que não seja = estamos numa NÃO-EQUI-JUNÇÃO. Para determinar o nível de salarial de um empregado (GRADE) temos que encontrar o intervalo de valores em que o salário do empregado se enquadra, estando as categorias armazenadas na tabela SALGRADE. O relacionamento entre as tabelas EMP e SALGRADE é uma não-equi-junção, pois nenhuma coluna de EMP corresponde directamente a uma coluna de SALGRADE sendo a relação obtida utilizando o operador BETWEEN.


Sintaxe antiga SQL99
select E.ename, E.sal, S.grade
from emp E, salgrade S
where E.sal between S.losal and S.hisal;
select E.ename, E.sal, S.grade
from emp E 
inner join salgrade S on (E.sal between S.losal and S.hisal);
ENAME      SAL                    GRADE                  
---------- ---------------------- ---------------------- 
SMITH      800                    1                      
JAMES      950                    1                      
ADAMS      1100                   1                      
WARD       1250                   2                      
MARTIN     1250                   2                      
MILLER     1300                   2                      
TURNER     1500                   3                      
ALLEN      1600                   3                      
CLARK      2450                   4                      
BLAKE      2850                   4                      
JONES      2975                   4                      
SCOTT      3000                   4                      
FORD       3000                   4                      
KING       5000                   5                      

14 rows selected

Também poderiamos ter utilizado os operadores >= e <=.

bthome.gifTopo


Realizado por Turtle Learning ®. Última alteração em 2011-02-26