OUTER JOIN, uważnie dołączaj tabele!

Marcinie, na luzie dzisiaj porada. Jeżeli chcesz łączyć więcej niż dwie tabele w sposób „inner  join”, to znaczy w wyniku mają być tylko te rekordy, dla których złączenie występuje, to dużych niespodzianek nie powinieneś spotkać. Gdy jednak chcesz łączyć więcej niż dwie tabele w sposób „outer join” lub stosując „plusik” to takie łączenie wymaga trzymania się jednej podstawowej zasady i nie będzie problemów. 

Zasada: Wybierz tabelę największą i dołączaj kolejne tabele w sposób „z plusikiem” lub „outer join” pisząc warunek złączenie danej/bieżącej dołączanej tabeli zawsze do tej największej tabeli.

Przykład: kadry prowadzą tabelę PRACOWNICY, w polach jest: ID, IMIĘ, NAZWISKO. Pracownicy zostali wysłani na różne szkolenia, w różnych składach. Listy obecności są w trzech osobnych tabelach, SZKOLENIE_SLQ, SZKOLENIE_PLSQL i SZKOLENIE_EXCEL, każda z tabel ma dwa pola OPIS i ID_UCZESTNIKA.
Jeżeli chcemy zrobić wykaz dla każdego pracownika szkoleń, w których był to najprościej będzie gdy do tabeli PRACOWNICY w sposób „outer join” dodasz każdą z ww. tabel z listą obecności, ale w każdym razie łącz w następujący sposób:

PRAWCOWNIK.ID=NAZWA_TABELI.ID_UCZESTNIKA (+), gdzie nazwa_tabeli to poszczególne tabele z listami uczestników.

W przykładzie to wyraźnie widać, iż nie należy łączyć list, ale w praktyce na bardziej złożonych i obszerniejszych tabelach łatwo ten błąd popełnić.  I tak na marginesie, w przykładzie po lewej mam największą tabelę i stosowałem „left outer join”, no bo tak piszemy, od lewej :-).
W.
Linka do skryptu tutaj, a plik w EXCEL tu.



Brak komentarzy:

Prześlij komentarz