Oracle
 sql >> Database >  >> RDS >> Oracle

Qual è la differenza tra i join ANSI e non ANSI e quale mi consigliate?

entrambe le sintassi di solito funzionano senza problemi, ma se provi ad aggiungere una condizione where vedrai che con la seconda è molto più semplice capire qual è la condizione di join e quale la clausola 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;

Inoltre, è molto più facile riconoscere un outer join e non dimenticare di includere il (+). Nel complesso si può dire che è solo una questione di gusti, ma la verità è che la seconda sintassi è molto più leggibile e meno soggetta a errori.