Nagrałem pare dni temu odcinek w którym wyjaśniam podstawy joinów oraz sens ich używania. Tutaj znajdziesz odcinek:
https://www.youtube.com/watch?v=MOCe2a-Wkmg&list=PL8g9gILZp1OJpjlu7AuR9Ysu4z5Rff_AQ&index=13
Co do Twojego pytania. Joiny możemy dzielić na kilka kategorii, zależy jakie kryterium przyjmiesz. Tzn. ze względu na wersję standardu mamy ANSI(89), czyli łączenie gdzie warunek jest w where lub ANSI(92), gdzie warunek piszemy po słowie on.
Głowna różnica między tymi dwoma rodzajami to czytelność. Ja zdecydowanie preferuję ANSI92, bo dokładnie widać w jaki sposób połączone są tabele. W przypadku ANSI89 nie wygląda to już tak dobrze, poza tym można się natknąć na kilka mało zrozumiałych błędów, gdy korzystasz z (+). Jeśli chciałbyś przetestować wydajność takich wiązań to powinieneś takie zapytanie wykonać w pętli, np. 10000 razy kilka razy w ciągu pracy serwera (chyba, że testujesz lokalnie i obciążenie jest zawsze takie same).
Inne rodzaje łączeń to łączenia ze względu na rodzaj danych jakie chcemy uzyskać, np. left, right, inner i outer join.
Generalnie zachęcam do łączenia z warunkiem w on. Ostatnio naprawiałem błąd w kodzie, bo ktoś dodał do dosyć długiej listy tabel kolejną tabelę i "chyba zapomniał" dodać warunku przez co zrobił się iloczyn kartezjański. W łączeniu w on taka sytuacja by nie wystąpiła bo musiałbyś napisać jakikolwiek warunek, bo inaczej nie powiążesz 2 tabel. Poza tym w przypadku łączenia w where nie widać co ogranicza rekordy (zwykły where) a co jest where łączącym tabele.
Jeśli chodzi o łączenie kilku tabel to działa to dokładnie tak samo jak łączenie 2 tabelach. Najpierw łączysz A z tabelą B (stanowią one wtedy koncepcyjnie jedną tabelę) a później tabele C z tabelą A lub B lub warunek na obie te tabele.
W razie pytań pisz :)