Oracle
 sql >> Base de données >  >> RDS >> Oracle

Quelle est la différence entre les jointures ANSI et non ANSI, et laquelle recommandez-vous ?

les deux syntaxes fonctionnent généralement sans problème, mais si vous essayez d'ajouter une condition where, vous verrez qu'avec la seconde, il est beaucoup plus simple de comprendre quelle est la condition de jointure et quelle est la clause 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;

De plus, il est beaucoup plus facile de reconnaître une jointure externe et n'oubliez pas d'inclure le (+). Dans l'ensemble, vous pouvez dire que ce n'est qu'une question de goût, mais la vérité est que la deuxième syntaxe est beaucoup plus lisible et moins sujette aux erreurs.