Oracle outer join sono un modo di visualizzazione dei dati senza filtraggio aggiuntivi di record. Se due tabelle contengono dati correlati , è probabile che una delle tavole possono non avere alcun record . Questo può accadere solo quando non ci sono vincoli sulle tabelle relative che i record devono essere presenti. Per esempio, se una società ha un numero di clienti , è possibile che in qualsiasi momento il cliente può non aver ordinato alcun prodotto . La situazione inversa può anche essere vero , nel senso che i prodotti possono non avere clienti a loro assegnati. Istruzioni
1
Selezionare due tabelle da database Oracle per cui ci possono essere i record esistenti in un unico , ma non necessariamente in un altro. La tabella con i record eventualmente 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 (a sinistra o destra) formeranno il join esterno . Un esempio rende più chiara la seguente:
selezionare c.customerlastname , Stati
p.productid
da
cliente c , productorders
p < p > dove c.customerid = p.customerid ;
da questa query una decisione deve essere fatta , Avete bisogno di un elenco di tutti gli ordini per i prodotti con ( o senza ) i clienti o la situazione inversa vale a dire un elenco di clienti con o senza ordini ?
3
Inserire una ( + ) indicatore per identificare la tabella da cui righe opzionali vengono restituiti cioè avere i record o no . 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 , Stati
p.productid
< p > da
cliente c , productorders p
dove c.customerid = p.customerid ( + ) ;
Se la query necessaria per trovare i prodotti che non possono avere i clienti contro li , la cui clausola sarebbero:
dove c.customerid ( + ) = p.customerid ;
4
eseguire la query e restituisce il risultato . L' esempio a sinistra outer join restituirà i record simili al seguente :
c.customerlastname 123423
Jones