It would probably be nice if QV syntax were closer to SQL, but it doesn't allow to join already the input tables, then project the fields you want to see only.
Like in SQL:
INNER JOIN table2
Instead, you join a resident table with an output table of a second load (like in your example Table3 with the output from Table2 load). And, QV determines the keys just by looking at same field names in both tables, you can't explicitely state the key fields for the join.
Two alternatives to what I proposed above that came to my mind:
a) Do a resident load of your Table3 with the fields you want, then drop Table3:
Inner Join ([Table3])
LOAD Champ1, Champ3 RESIDENT Table3;
DROP TABLE Table3;
b) JOIN in your SQL DB.
Thank you for your answer.
For the sake of simplicity I used the same database for the example above, but in reality the two databases are not on the same instance and I can't use database links (it is forbidden by security policies), so I can't make the join at the database level.
Concerning your answer a) this is exactly what I was looking for, the only thing that I'm afraid is the behavior of qlikview memory wise. Say the size of Table3 is 3GB (compressed) and the size of Table3 (with only Champ1 and Champ3) is 2GB, is it possible that at a given point in time Qlikview will use 5GB or ram.