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.
Brak komentarzy:
Prześlij komentarz