Różnica między RIGHT a LEFT JOIN

Różnica między RIGHT a LEFT JOIN
P3
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 52
0

Witam,

mam prośbę o wytłumaczenie mi (intuicyjnie) jaka jest różnica między połączeniami zewnętrznymi right i left join w SQL-u firmy Oracle.

Wiem tyle, że: połączenia zewnętrzne uwzględniają w wyniku zapytania te rekordy, które nie mają swoich odpowiedników w drugiej tabeli. Jeżeli w jednej tabeli jakieś pole jest puste, to w wyniku zostanie tam wstawiona wartość NULL.

Czy mógłby jakiś biegły bazodanowiec intuicyjnie wytłumaczyć, może na jakimś przykładzie, jaka jest różnica między między right a left join, i w jakich życiowych sytuacjach się je wykorzystuje? Uczę się SQL-a dopiero od miesiąca i trudno mi to zrozumieć (pytanie pewnie trywialne).

SA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1452
0

A RIGHT JOIN B to można zdefiniować jako B LEFT JOIN A, więc jedyna różnica to kolejność argumentów. Niektóre silniki nie posiadają nawet obsługi RIGHT JOIN (np. SQLite).

AK
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 3561
0

Różnica się robi z dodaniem słowa OUTER (pozwolenie na null po którejś stronie relacji).

P3
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 52
0

A co jakbym dał :

B right join A ?

skąd mam wiedzieć, która tabela ma być po której stronie napisu "right join"?

PA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 3891
0

intuicyjnie left i right wskazujesz z której tabeli masz pobrać wszystkie rekordy, niezależnie od tego czy maja dopasowanie.

A join B - połacz tylko pasujące elementy

A jest po lewej (left) B po prawej (Right)

czyliL

A left join B -połacz tabelę, ale zwróć wszystkie rekordy z "lewej" tabeli A
A right join B -połacz tabelę, ale zwróć wszystkie rekordy z "prawej" tabeli B

Marcin.Miga
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2794
0

Właściwie wszystko zostało powiedziane. Ale z praktyki dodam jedną, ale ważną rzecz. Jeśli dajesz a LEFT JOIN b, a we WHERE dajesz warunek na b (inny niż NOT NULL), to naprawdę robisz a JOIN b.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.