Someone already answered this question in the past. Here’s the link: Embedded SQL in SQLRPGLE using JOIN on multiple files.
Unfortunately, that other answer doesn’t answer the question that is asked here.
There is no “best” way to do it. It always depends on what’s in the files, what you plan on selecting by (WHERE) and what you have available to join on in each of the files.
In short, you join using the same SELECT structure that you would use in any SQL client, use the best one for the task at hand.
Code the SELECT in STRSQL (or iNav Run SQL Scripts) to get some benchmarks to see if a choice of JOIN works well. If it does, then code it that way in RPG (or COBOL or C). If it doesn’t perform well enough in STRSQL (or whatever client), then run under debug (or SQL Explain or whatever feature is available to you) and implement the resulting suggestions until it’s acceptable.