too small to read everything; short answer is that Qlik automatically joins tables based on the names of the fields. If more than one field exists in a table it creates a synthetic key to make the join on a single field.
This is technically fine and the data should filter as you would expect; if the keys are valid.
To prevent a join, alias the field name.
To resolve the synthetic key, create a table key on which to join your tables. I use Hash128, function as it allows multiple fields and creates a unique key; its not anything you would display. Only ONE of the tables should retain the fields in the Hash128 key for display purposes.