Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Qual é a diferença entre junções ANSI e não ANSI e qual você recomenda?


ambas as sintaxes normalmente funcionam sem problemas, mas se você tentar adicionar uma condição where verá que com a segunda é muito mais simples entender qual é a condição de junção e qual é a cláusula where.

1)
  SELECT a.name,
         a.empno,
         b.loc 
    FROM tab a,
         tab b 
   WHERE a.deptno = b.deptno(+)
     AND a.empno = 190;

2)
         SELECT a.name,
                a.empno,
                b.loc 
           FROM tab a,
LEFT OUTER JOIN tab b 
             ON a.deptno = b.deptno
          WHERE a.empno = 190;

Além disso, é muito mais fácil reconhecer uma junção externa e não se esqueça de incluir o (+). No geral, pode-se dizer que é apenas uma questão de gosto, mas a verdade é que a segunda sintaxe é muito mais legível e menos propensa a erros.