I have run a test using the XAMPLE subsystem which is contained in the Radicore download. I changed the relationship between X_PERSON and X_PERSON_ADDR so that it reads as follows:
$this->parent_relations[] = array('parent' => 'x_person',
'parent_field' => 'CONCAT(first_name, \' \', last_name) AS person_name, value1, value2',
'fields' => array('person_id' => 'person_id'));
When I ran the task it gebnerate the following SQL query:
SELECT SQL_CALC_FOUND_ROWS x_person_addr.*, CONCAT(x_person.first_name,' ',x_person.last_name) AS person_name, x_person.value1, x_person.value2
FROM x_person_addr
LEFT JOIN x_person ON (x_person.person_id=x_person_addr.person_id)
WHERE x_person_addr.person_id='PA'
ORDER BY x_person_addr.person_id, x_person_addr.address_no
LIMIT 10 OFFSET 0
As you can see it successfully retrieves multiple fields from the parent table. Can you step through with your debugger to see how the problem relationship is prcessed in the _sqlForeignJoin() method within 'std.table.class.inc'?