Passer du SQL oracle au SQL ansi

https://stackoverflow.com/questions/18891148/oracle-joins-comparison-between-conventional-syntax-vs-ansi-syntax#

 

 

┌───────────────────────────────────┬─────────────────────────────────────────────┐
 INNER JOIN - CONVENTIONAL          INNER JOIN - ANSI SYNTAX                    
├───────────────────────────────────┼─────────────────────────────────────────────┤
 SELECT                             SELECT                                      
      emp.deptno                          ename,                                
 FROM                                     dname,                                
      emp,                                emp.deptno,                           
      dept                                dept.deptno                           
 WHERE                              FROM                                        
      emp.deptno = dept.deptno;           scott.emp INNER JOIN scott.dept       
                                          ON emp.deptno = dept.deptno;          
├───────────────────────────────────┼─────────────────────────────────────────────┤
 LEFT OUTER JOIN - CONVENTIONAL     LEFT OUTER JOIN - ANSI SYNTAX               
├───────────────────────────────────┼─────────────────────────────────────────────┤
 SELECT                             SELECT                                      
      emp.deptno                         ename,                                 
 FROM                                    dname,                                 
      emp,                               emp.deptno,                            
      dept                               dept.deptno                            
 WHERE                              FROM                                        
      emp.deptno = dept.deptno(+);       scott.emp LEFT OUTER JOIN scott.dept   
                                         ON emp.deptno = dept.deptno;           
├───────────────────────────────────┼─────────────────────────────────────────────┤
 RIGHT OUTER JOIN - CONVENTIONAL    RIGHT OUTER JOIN - ANSI SYNTAX              
├───────────────────────────────────┼─────────────────────────────────────────────┤
 SELECT                             SELECT                                      
      emp.deptno                         ename,                                 
 FROM                                    dname,                                 
      emp,                               emp.deptno,                            
      dept                               dept.deptno                            
 WHERE                              FROM                                        
      emp.deptno(+) = dept.deptno;       scott.emp RIGHT OUTER JOIN scott.dept  
                                         ON emp.deptno = dept.deptno;           
├───────────────────────────────────┼─────────────────────────────────────────────┤
 FULL OUTER JOIN - CONVENTIONAL     FULL OUTER JOIN - ANSI SYNTAX               
├───────────────────────────────────┼─────────────────────────────────────────────┤
 SELECT                             SELECT                                      
      *                                  *                                      
 FROM                               FROM                                        
      emp,                               scott.emp FULL OUTER JOIN scott.dept   
      dept                               ON emp.deptno = dept.deptno;           
 WHERE                                                                          
      emp.deptno = dept.deptno(+)                                               
 UNION ALL                                                                      
 SELECT                                                                         
      *                                                                         
 FROM                                                                           
      emp,                                                                      
      dept                                                                      
 WHERE                                                                          
      emp.deptno(+) = dept.deptno                                               
      AND emp.deptno IS NULL;                                                   
└───────────────────────────────────┴─────────────────────────────────────────────┘

Commentaires

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Translate »