Saltar navegação

S01.a - INNER JOIN

Conceitos

Um inner join inclui na tabela resultado, somente as linhas em que os valores das colunas combinadas (joined) são iguais. Pelo fato de o inner join gerar uma tabela resultado com mais de uma linha, ele deve ser codificado dentro de uma declaração DECLARE CURSOR.

Tanto uma view quanto um cursor serão read only se suas declarações SELECT contiverem um join.

Sintaxe Implícita

SELECT column-specification [AS result-column]
  [, column-specification [AS result-column]] ...
  FROM table-spec, table-spec [, table-spec] ...
  [WHERE condition]
  [ORDER BY sort-column [DESC] [, sort-column [DESC]] ...]

Sintaxe Explícita

SELECT
column-specification [AS result-column]
 
  [, column-specification [AS result-column]] ...  
  FROM table-spec [, table-spec] ...  
  INNER JOIN table-spec  
  [ON join-condition]
 
  [WHERE selection-condition]  
  INNER JOIN table-spec
 
  [ON join-condition]  
  [WHERE selection-condition]
 
  [ORDER BY sort-column [DESC] [, sort-column [DESC]] ...]  

Na sintaxe acima, table-spec pode ser uma tabela ou uma view. Para efeitos de programação a view pode ser utilizada em qualquer lugar que uma tabela for utilizada.

Exemplos

Join de duas tabelas (EMP e DEPT) onde E_EMPNO é igual a D_EMPNO e o código do empregado é maior que 1000.

Implícito.

SELECT E_EMPNO, DEPTNO, LNAME, FNAME
  FROM PW0001.EMP, PW0001.DEPT
  WHERE E_EMPNO = D_EMPNO
  AND E_EMPNO > '1000'

Explícito.

SELECT E_EMPNO, DEPTNO, LNAME, FNAME
  FROM PW0001.EMP
  INNER JOIN PW0001.DEPT
  ON E_EMPNO = D_EMPNO
  WHERE E_EMPNO > '1000'

É recomendável utilizar o formato explícito para manter equivalência com o formato do outer join visto adiante.

Se não for especificada uma condição nas cláusulas ON ou WHERE, a tabela resultado será a combinação de todas as linhas da primeira tabela com todas as linhas da segunda tabela.

 

 

Licença: licença proprietária