Show field from a join table on Views
The solution is pretty simple.
Here is the code:

 class PersonViewsData extends EntityViewsData implements EntityViewsDataInterface {

  /**
   * {@inheritdoc}
   */
   public function getViewsData() {
   $data = parent::getViewsData();

   $data['person']['table']['base'] = array(
   'field' =&gt; 'id',
   'title' =&gt; $this-&gt;t('Person'),
    'help' =&gt; $this-&gt;t('The Person ID.'),
   );


 $data['person']['id'] = array(
'title' =&gt; t('Medecin tag test'),
'help' =&gt; t('Medecin tag test '),
'relationship' =&gt; array(
   // Views name of the table to join to for the relationship.
  'base' =&gt; 'person_tag_field_data',
  // Database field name in the other table to join on.
  'base field' =&gt; 'person_id',

  'id' =&gt; 'standard',
  // Default label for relationship in the UI.
  'label' =&gt; t('Test field'),
   ),
 );

 return $data;
 }
  }


Then you go in UI of the view:  Advanced-> Relation -> add a new relation.
You can see your new relationship there. After selecting it, go to "Add field ", you can then, find you new field that you can add to your view.

NB: There is no need to use hook_views_query_alter as mentionned in the question above.