Oracle outer join

Di seguito un esempio di sintassi di outer join,
la tabella principale è tab1, mentre tab2 è quella in outer.
Fare attenzione alla direzione della relazione dopo la clausola ON,
infatti prima inserire il campo della tabella in outer join (tab2),
dopo il campo della tabella principale (tab1)

SELECT t1.id,t1.field1, t2.field2
FROM tab1 t1 LEFT OUTER JOIN tab2 t2 ON t2.field2 = t1.field1 
ORDER BY t1.id

Per maggiori dettagli
http://docs.oracle.com/cd/B28359_01/server.111/b28286/queries006.htm

La stessa query in sintassi SQL99

SELECT t1.id,t1.field1, t2.field2
FROM tab1 t1, tab2 t2
WHERE t2.field2(+) = t1.field1 
ORDER BY t1.id

Di seguito un altro esempio di outer join dove la tabella principale (table1) conterrà tutti i suoi dati, mentre in outer è possibile relazionare un set di dati formato da (table2, table3) che a loro volta sono in join tra di loro.

SELECT table1.id, table1.account, tablecontacts.name, tablecontacts.number
FROM table1
LEFT JOIN  (SELECT table2.id2, table3.first, table3.last     
    FROM table3, table2
    WHERE table3.id3 = table2.id2
   ) as tablecontacts
ON table1.id = tablecontacts.id2

Un esempio di come utilizzare nella clausola FROM una subquery, nel seguente caso NON si tratta di OUTER, ma si semplice JOIN. Può essere utile quando vi vuole forzare l’esecuzione delle istruzioni SQL per mancanza di key colum.

SELECT table1.id1, table1.field1, tabsubq.firstrno, tabsubq.lastrno
FROM table1,  
   (SELECT table2.id2, table3.firstrno, table3.lastrno      
    FROM table3, table2
    WHERE table3.n3 = table2.id2
   ) as tabsubq
WHERE table1.id1 = tabsubq.id2
This entry was posted in Database, Oracle. Bookmark the permalink.