Usando OUTER JOINS

Um OUTER JOIN é uma “junção externa” que retorna todas as linhas que atendem à condição de junção e também pode retornar mais algumas ou todas essas linhas de uma tabela para as quais nenhuma linha da outra satisfaz a condição de junção.

Para escrever uma consulta que execute uma junção externa das tabelas A e B e retorne todas as linhas de A (uma junção externa esquerda), use a sintaxe LEFT [OUTER] JOIN na cláusula FROM ou aplique o operador de junção externa (+) a todas as colunas de B na condição de junção na cláusula WHERE. Para todas as linhas em A que não possuem linhas correspondentes em B, o Oracle Database retorna nulo para quaisquer expressões da lista de seleção que contêm colunas de B.

Para escrever uma consulta que execute uma associação externa das tabelas A e B e retorne todas as linhas de B (uma associação externa direita), use a sintaxe RIGHT [OUTER] JOIN na cláusula FROM ou aplique o operador de associação externa (+) a todas as colunas de A na condição de junção na cláusula WHERE. Para todas as linhas em B que não possuem linhas correspondentes em A, o Oracle retorna nulo para quaisquer expressões da lista de seleção que contêm colunas de A.

Para escrever uma consulta que execute uma junção externa e retorne todas as linhas de A e B, estendidas com nulos se elas não satisfizerem a condição de junção (uma junção externa completa), use a sintaxe FULL [OUTER] JOIN na cláusula FROM.

Você não pode comparar uma coluna com uma subconsulta na cláusula WHERE de qualquer associação externa, independentemente do formulário especificado.

Considerações

Você não pode especificar o operador (+) em um bloco de consulta que também contém a sintaxe de junção da cláusula FROM.

O operador (+) pode aparecer apenas na cláusula WHERE ou, no contexto de correlação à esquerda (ao especificar a cláusula TABLE) na cláusula FROM, e pode ser aplicado apenas a uma coluna de uma tabela ou exibição.

Você não pode usar o operador (+) para fazer um OUTER JOIN de uma tabela consigo mesma, pode fazer sim um SELF JOIN mas deve usar duas tabelas exemplo FUNCIONARIO F1, FUNCIONARIO F2 daí usar no WHERE F1.ID (+) = F2.ID.

Próximo Tópico: Compreendendo e usando produtos cartesianos.