2013-02-27 13 views
6

Da un po 'di tempo so solo come usare INNER JOIN e non ho idea di cosa faccia LEFT/RIGHT (OUTER) JOIN. Anche se, come ho appena letto su di esso, non riesco a vedere quale scopo ha il diritto?join destro uguale a sinistra join?

Mi sembra che sia identico ad un LEFT inverso JOIN

Se seguiamo il mio esempio:

SELECT t1.* FROM table1 t1 RIGHT JOIN table2 t2 ON t2.value = t1.value 

sarebbe identica a:

SELECT t2.* FROM table2 t2 LEFT JOIN table1 t1 ON t1.value = t2.value 

È questo diritto, o AM Mi manca qualcosa?

+0

http://stackoverflow.com/a/248403/40822 – dotjoe

+0

Sì, ho fatto delle ricerche sbagliate prima di postare, il mio male! Chiaramente non solo un duplicato ... – Colandus

+0

È possibile che il comitato ANSI su SQL abbia creato RIGHT e LEFT OUTER JOIN in modo che i programmatori SQL possano impegnarsi in infiniti dibattiti di advocacy su alcune funzionalità linguistiche diverse dalla validità di NULL! :-) –

risposta

2

Sì, hai ragione. Da Wikipedia:

Un join esterno destro (o sinistro join) ricorda da vicino un esterno sinistro join, se non con il trattamento delle tabelle invertiti. Ogni riga da la tabella "destra" (B) verrà visualizzata nella tabella unita almeno una volta. Se non esiste una riga corrispondente dalla tabella "sinistra" (A), NULL apparirà in colonne da A per quei record che non hanno corrispondenza in B. Un join esterno destro restituisce tutti i valori dalla tabella destra e corrisponde a valori dalla tabella di sinistra (NULL in caso di mancata corrispondenza del predicato ).

0

Right join equivale a un valore inverso left join.

Questo non lo rende inutile. Alcune persone potrebbero preferire scrivere le loro domande in questo modo. Non sono una di quelle persone. Personalmente, non uso quasi mai giusti join esterni. E nessuna query dovrebbe avere entrambi i join esterni sinistro e destro.

Ci potrebbero essere casi in cui qualcuno preferirebbe:

select . . . 
from table t right outer join 
     (very 
     long 
     subquery 
     here 
    ) t2 
     on . . . 

Per mettere la tavola secondo.

+0

Mi dispiace per il titolo sconvolgente! : p – Colandus

Problemi correlati