create chains of views joins so one view can 'see' across more than one join
I added a relationship to the mix and that's opened up two extra sets of fields ('c' and 'd') I can't explain why, I think it's something to do with the joins that were already setup on these base tables. This then meant that when I bridged them with the relationship it opened it all up.

example:

$data['a']['a_id']['relationship']['handler'] = 'views_handler_relationship';
$data['a']['a_id']['relationship']['base'] = 'b';
$data['a']['a_id']['relationship']['base field'] = 'references_a_id';
    (... etc.)