Thanks again for your help.
OK, well here's the idea.
I have a project database in which a project consists of creating a bin containing a bunch of samples of a single item that is one of a set of items, making another bin of samples (which may or may not contain the same item that is in a separate bin), or retrieving a sample from one of these bins. So there is a project table, a table of the different items, and a table of bins that is joined to the project table via a join table.
Now, when I create a new project, I also sometimes need to create a new bin, which I can do by entering data into one of the bin fields from the projects table; this then creates records in the both the bin table and the join table as long as the record id field in each is an auto-generated value filled on creation.
This is what happens in my example when I enter a value in Table 1 in the field Table2::color. But then Table 2:name doesn't look up its value from Table 1:name. (For simplicity, my example is doing its lookup from Table 1, instead of from a 4th table; this doesn't affect the outcome.)
Now, this bin obviously also needs to be identified as to contents, that is, which of the items does it contain? I've already identified which item is being used in this project, so I want the new bin to simply look up what this item is when the record is created. But it doesn't. The relationship is valid, in the sense that after the record is created, I can then use a SetField script step to retreive the value, or I can replace the contents via a calculation using the relationship to item via the projects table. But it won't do this as a lookup.
In contrast, you *can* look up the correct value if there isn't an intervening join table.