Różnica między RIGHT a LEFT JOIN

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).

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).

0

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

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"?

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

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.

1 użytkowników online, w tym zalogowanych: 0, gości: 1