diff --git a/entityqueue.views.inc b/entityqueue.views.inc
index 4396b52..aa2026c 100644
--- a/entityqueue.views.inc
+++ b/entityqueue.views.inc
@@ -13,6 +13,7 @@ use Drupal\entityqueue\Entity\EntityQueue;
  */
 function entityqueue_views_data_alter(array &$data) {
   $entity_type_manager = \Drupal::entityTypeManager();
+  $entity_subqueue = $entity_type_manager->getDefinition('entity_subqueue');
 
   // Find all entity types that need an 'entityqueue' relationship.
   $target_entity_type_ids = [];
@@ -48,10 +49,12 @@ function entityqueue_views_data_alter(array &$data) {
       'label' => t('@target_label queue', ['@target_label' => $entity_type->getLabel()]),
       'group' => t('Entityqueue'),
       'help' => t('Create a relationship from @target_label to an entityqueue.', ['@target_label' => $entity_type->getLabel()]),
-      'base' => $subqueue_items_table_name,
+      'base' => $entity_subqueue->getDataTable() ?: $entity_subqueue->getBaseTable(),
       'entity_type' => 'entity_subqueue',
-      'base field' => $columns['target_id'],
-      'relationship field' => $entity_type->getKey('id'),
+      'base field' => $entity_subqueue->getKey('id'),
+      'field_name' => $field_storage->getName(),
+      'field table' => $subqueue_items_table_name,
+      'field field' => $columns['target_id'],
     ];
 
     $data[$target_base_table]['entityqueue_relationship']['sort'] = array(
diff --git a/src/Entity/EntitySubqueue.php b/src/Entity/EntitySubqueue.php
index e748d9a..51b9729 100644
--- a/src/Entity/EntitySubqueue.php
+++ b/src/Entity/EntitySubqueue.php
@@ -35,10 +35,10 @@ use Drupal\user\UserInterface;
  *     "route_provider" = {
  *       "html" = "Drupal\Core\Entity\Routing\DefaultHtmlRouteProvider",
  *     },
- *     "list_builder" = "Drupal\entityqueue\EntitySubqueueListBuilder"
+ *     "list_builder" = "Drupal\entityqueue\EntitySubqueueListBuilder",
+ *     "views_data" = "Drupal\views\EntityViewsData",
  *   },
  *   base_table = "entity_subqueue",
- *   data_table = "entity_subqueue_field_data",
  *   entity_keys = {
  *     "id" = "name",
  *     "bundle" = "queue",
diff --git a/src/Plugin/views/filter/EntityQueueInQueue.php b/src/Plugin/views/filter/EntityQueueInQueue.php
index 76c16fd..ce67dab 100644
--- a/src/Plugin/views/filter/EntityQueueInQueue.php
+++ b/src/Plugin/views/filter/EntityQueueInQueue.php
@@ -66,8 +66,10 @@ class EntityQueueInQueue extends BooleanOperator {
 
     // Try to find an entity queue relationship in this view, and pick the first
     // one available.
+    $entity_queue_relationship = NULL;
     foreach ($this->view->relationship as $id => $relationship) {
       if ($relationship instanceof EntityQueueRelationship) {
+        $entity_queue_relationship = $relationship;
         $this->options['relationship'] = $id;
         $this->setRelationship();
 
@@ -75,7 +77,8 @@ class EntityQueueInQueue extends BooleanOperator {
       }
     }
 
-    if (isset($this->relationship) && ($subqueue_items_table_alias = $this->query->ensureTable($this->definition['field table'], $this->relationship))) {
+    if ($entity_queue_relationship) {
+      $subqueue_items_table_alias = $entity_queue_relationship->first_alias;
       $field_field = $this->definition['field field'];
       $operator  = $this->value ? 'IS NOT NULL' : 'IS NULL';
       $condition = "$subqueue_items_table_alias.$field_field $operator";
@@ -90,7 +93,7 @@ class EntityQueueInQueue extends BooleanOperator {
     }
     else {
       if ($this->currentUser->hasPermission('administer views')) {
-        drupal_set_message($this->t('In order to sort by the queue position, you need to add the Entityqueue: Queue relationship on View: @view with display: @display', ['@view' => $this->view->storage->label(), '@display' => $this->view->current_display]), 'error');
+        drupal_set_message($this->t('In order to filter on items from the queue, you need to add the Entityqueue: Queue relationship on View: @view with display: @display', ['@view' => $this->view->storage->label(), '@display' => $this->view->current_display]), 'error');
       }
     }
   }
diff --git a/src/Plugin/views/relationship/EntityQueueRelationship.php b/src/Plugin/views/relationship/EntityQueueRelationship.php
index 16e5d86..3025657 100644
--- a/src/Plugin/views/relationship/EntityQueueRelationship.php
+++ b/src/Plugin/views/relationship/EntityQueueRelationship.php
@@ -10,7 +10,7 @@ namespace Drupal\entityqueue\Plugin\views\relationship;
 use Drupal\Core\Form\FormStateInterface;
 use Drupal\entityqueue\Entity\EntityQueue;
 use Drupal\views\Plugin\views\display\DisplayPluginBase;
-use Drupal\views\Plugin\views\relationship\RelationshipPluginBase;
+use Drupal\views\Plugin\views\relationship\EntityReverse;
 use Drupal\views\ViewExecutable;
 
 /**
@@ -20,7 +20,7 @@ use Drupal\views\ViewExecutable;
  *
  * @ViewsRelationship("entity_queue")
  */
-class EntityQueueRelationship extends RelationshipPluginBase {
+class EntityQueueRelationship extends EntityReverse {
 
   /**
    * {@inheritdoc}
diff --git a/src/Plugin/views/sort/EntityQueuePosition.php b/src/Plugin/views/sort/EntityQueuePosition.php
index 215c624..80ba55d 100644
--- a/src/Plugin/views/sort/EntityQueuePosition.php
+++ b/src/Plugin/views/sort/EntityQueuePosition.php
@@ -66,8 +66,10 @@ class EntityQueuePosition extends SortPluginBase {
 
     // Try to find an entity queue relationship in this view, and pick the first
     // one available.
+    $entity_queue_relationship = NULL;
     foreach ($this->view->relationship as $id => $relationship) {
       if ($relationship instanceof EntityQueueRelationship) {
+        $entity_queue_relationship = $relationship;
         $this->options['relationship'] = $id;
         $this->setRelationship();
 
@@ -75,8 +77,9 @@ class EntityQueuePosition extends SortPluginBase {
       }
     }
 
-    if (isset($this->relationship) && ($subqueue_items_table_alias = $this->query->ensureTable($this->definition['field table'], $this->relationship))) {
+    if ($entity_queue_relationship) {
       // Add the field.
+      $subqueue_items_table_alias = $entity_queue_relationship->first_alias;
       $this->query->addOrderBy($subqueue_items_table_alias, $this->realField, $this->options['order']);
     }
     else {
