Come fare un outer join in Oracle

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.

istruzione

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



Smith 123423

Jones

Carr 89.654

Bernardstein 66543

Si noti che per questo join esterno sinistro, l'unico cliente in questo elenco senza un ordine è "Jones".