2013-02-27 9 views
6

Od pewnego czasu wiem tylko, jak używać INNER JOIN i absolutnie nie mam pojęcia, co robi LEFT/RIGHT (OUTER) JOIN. Chociaż, jak o tym właśnie przeczytałem, nie widzę, jaki cel ma PRAWO?prawe połączenie równe lewemu złączeniu?

Wydaje mi się, że to identyczny odwrotnej LEFT JOIN

Jeżeli podążamy za moim przykładem:

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

byłaby identyczna:

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

Czy to dobrze, czy jestem Coś przegapiłem?

+0

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

+0

Tak, zrobiłem złe wyszukiwanie przed wysłaniem, moje złe! Oczywiście nie tylko jeden duplikat ... – Colandus

+0

Możliwe, że komisja ANSI ds. SQL utworzyła PRAWE i LEWE ZEWNĘTRZNE DOŁĄCZY, aby programiści SQL mogli prowadzić niekończące się debaty rzecznicze na temat niektórych funkcji językowych innych niż ważność NULL! :-) –

Odpowiedz

2

Tak, masz rację. Od Wikipedia:

Prawo sprzężenia zewnętrznego (lub prawo przyłączenia) przypomina lewa zewnętrzna dołączyć, z wyjątkiem leczenia tabelach odwrócone. W każdym wierszu od "prawy" stół (B) pojawi się w połączonej tabeli co najmniej raz. Jeśli nie istnieje zgodny wiersz z "lewej" tabeli (A), NULL pojawi się w kolumnach od A dla tych rekordów, które nie pasują do B. Prawe sprzężenie zewnętrzne zwraca wszystkie wartości z prawej tabeli i pasuje wartości z lewej tabeli (NULL w przypadku braku zgodnego predykatu łączenia ).

0

Right join jest odpowiednikiem rewersu left join.

To nie czyni go bezużytecznym. Niektórzy ludzie wolą pisać swoje zapytania w ten sposób. Nie jestem jedną z tych osób. Osobiście prawie nigdy nie używam prawego zewnętrznego sprzężenia. I żadne zapytanie nie powinno zawierać lewych i prawych połączeń zewnętrznych.

Nie może być przypadki, gdy ktoś wolą:

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

objęcia tabeli sekund.

+0

Przykro mi z powodu niepokojącego tytułu! : p – Colandus

Powiązane problemy