When you first create Drupal view, you will get to pick the “type of entity” that you want the view to be showing (Show setting) , for instance: Content, Taxonomy Terms, Media, Users, Paragraph, etc.

2026-05-06T090157

Once this setting selected, and the view is saved, it becomes effective locked, because it defined the view database base table, for instance:

  • when you select “media” as your “type of entity” to show, Drupal View will join the multiple “media” related tables (e.g. media, media__field_data, media__field_media_image, media_field_media_video_file, etc) and use that as the base table:

    2026-05-06T091619

  • when you select “content” as you “type of entity” to show, and “content type” being “basic page (machine-name: page)”, Drupal View will filter node table for rows that have type == page, and joining the related tables (e.g. node_field_data, node__body, node__field_..., etc):

    2026-05-06T091655

As a result of this mechanism, when you select the type of entity for a view, you effectively have chosen:

  • what are the data available to the view ➡️ what are the fields available to be printed out
  • where queries can be ran against the table ➡️ what filters can you filter and sort on

Here comes the question, if you wish to use a field that’s not available in view’s chosen entity type (field that’s not available in the base table), how can you do that ?!

For instance, if you choose “Show content of type basic page” as the view setting, though the uid is available in the node_field_data table to help you identify the author of the page , there’s no readily available field in the node tables to give you the email address of that user !

2026-05-06T092958

That’s when we could take advantage of the Relationships feature in Drupal View; A relationship tells Drupal to JOIN the base table of your view to another entity/table that’s related to it.

For instance we can add the author relationship to a content view, then it can relate its base table node_field_data to its author/user users_field_data table, and find the field email there:

2026-05-06T093425

Consequently, if you are choosing one entity type in your view setting, but want to access field/data that’s only available in another entity type, you could use the “Relationships” settings available in view:

2026-05-06T094204

Reference

  • Drupal.org Documentation – Add a relationship to a view: link