Views: Define table without describing it as a base OR join table?
You should be able to add a relationship by using hook_views_data. You should however not use the join, but the relationship (right below the huge php comment on the linked page):

// Node ID table field.
$data['example_table']['nid'] = array(
  'title' =&gt; t('Example content'),
  'help' =&gt; t('Some example content that references a node.'),

  // Define a relationship to the {node} table, so example_table views can
  // add a relationship to nodes. If you want to define a relationship the
  // other direction, use hook_views_data_alter(), or use the 'implicit' join
  // method described above.
  'relationship' =&gt; array(
    'base' =&gt; 'node', // The name of the table to join with.
    'base field' =&gt; 'nid', // The name of the field on the joined table.
    // 'field' =&gt; 'nid' -- see hook_views_data_alter(); not needed here.
    'handler' =&gt; 'views_handler_relationship',
    'label' =&gt; t('Default label for the relationship'),
    'title' =&gt; t('Title shown when adding the relationship'),
    'help' =&gt; t('More information on this relationship'),
  ),
);