March 30
Oracle outer join sono un modo di visualizzazione dei dati, senza ulteriore filtraggio dei record. Se due tabelle contengono dati correlati, vi è una probabilità che una delle tabelle potrebbero non avere alcun record. Questo può avvenire solo quando non ci sono vincoli sulle tabelle relative che i record devono essere presenti. Ad esempio, se una società ha un numero di clienti, è possibile che in qualsiasi momento una cliente non può aver ordinato alcun prodotto. La situazione inversa può anche essere vero, nel senso che i prodotti non può avere i clienti a loro assegnati.
1 Selezionare due tabelle dal database Oracle per i quali ci possono essere record esistenti in uno, ma non necessariamente nell'altro. La tabella con i record opzionalmente mancanti sarà conosciuta come la tabella esterna in questo caso.
2 Scegliere l'ordine della query, in termini di decidere quale delle tabelle indicate nella query (destra o sinistra) formerà la outer join. Un esempio rende più chiaro come segue:
selezionare c.customerlastname,
p.productid
da parte di
cliente c, p productorders
dove c.customerid = p.customerid;
Da questa query ha da preso una decisione, non è necessario un elenco di tutti gli ordini di prodotti con (o senza) i clienti o la situazione inversa cioè un elenco di clienti, con o senza gli ordini?
3 Inserire un indicatore (+) per identificare la tabella da cui righe opzionali vengono restituite cioè con record o meno. In questo esempio, la tabella dei prodotti può o non può avere ordini contro di loro, e quindi questo sarà un join esterno sinistro:
selezionare c.customerlastname,
p.productid
da parte di
cliente c, p productorders
dove c.customerid = p.customerid (+);
Se la query necessaria per trovare i prodotti che non può avere i clienti contro di loro, la clausola where sarebbe:
dove c.customerid (+) = p.customerid;
4 Eseguire la query e restituire il risultato. L'esempio sinistra outer join restituirà record simili a quanto segue:
c.customerlastname p.productid
Jones
Carr 89.654
Bernardstein 66543
Si noti che per questo join esterno sinistro, l'unico cliente in questo elenco senza un ordine è "Jones".