diff --git a/draggableviews.module b/draggableviews.module
index c56ab73..2d0d11a 100644
--- a/draggableviews.module
+++ b/draggableviews.module
@@ -333,21 +333,36 @@ function draggableviews_view_draggabletable_form_ajax($form, $form_state) {
 
 /**
  * Get the draggable views weight sort of a view if there is one and return its
- * ID. If there are multiple of these sorts the first is returned.
+ * ID. If there are multiple of these sorts, either the one matching a specified
+ * table alias or the first one is returned.
  *
  * @param $view
  *   The view object.
+ * @param string $preferred_table_alias
+ *   (optional) In case there are multiple sorts, return the ID of one which has
+ *   this table alias, if it exists. If it doesn't exist, return the first sort.
  *
- * @return
- *   The ID of the sort or FALSE if there isn't one.
+ * @return string
+ *   The ID of the sort or empty string if there isn't one.
  */
-function _draggableviews_get_draggable_sort($view) {
+function _draggableviews_get_draggable_sort($view, $preferred_table_alias = '') {
+  $default_sort_id = '';
+
   foreach ($view->sort as $id => $sort) {
     if ($sort->definition['handler'] == 'draggableviews_handler_sort') {
-      return $id;
+
+      if (!$preferred_table_alias || $sort->table_alias == $preferred_table_alias) {
+        return $id;
+      }
+
+      if (!$default_sort_id) {
+        // Return this ID if no sort matching $preferred_table_alias is found.
+        $default_sort_id = $id;
+      }
     }
   }
-  return FALSE;
+
+  return $default_sort_id;
 }
 
 /**
diff --git a/views/draggableviews_join_handler.inc b/views/draggableviews_join_handler.inc
index dd7c0c4..40ecb96 100644
--- a/views/draggableviews_join_handler.inc
+++ b/views/draggableviews_join_handler.inc
@@ -35,21 +35,21 @@ class draggableviews_join_handler extends views_join {
 
     // Check whether setting view is set.
     $arguments = array();
-    $weight_key = _draggableviews_get_draggable_sort($view);
+    $weight_key = _draggableviews_get_draggable_sort($view, $table['alias']);
     if (!empty($view->sort[$weight_key]->options['draggableviews_setting_view'])) {
-      $condition .= " AND $table[alias].view_name = :view_name";
-      $condition .= " AND $table[alias].view_display = :view_display";
+      $condition .= " AND $table[alias].view_name = :view_name_$weight_key";
+      $condition .= " AND $table[alias].view_display = :view_display_$weight_key";
 
       // If it is setting view, set current view name and display name.
       if (isset($view->field['draggableviews'])) {
       // if ($view->sort[$weight_key]->options['draggableviews_setting_view'] == 'self') {
-        $arguments[':view_name'] = $view->name;
-        $arguments[':view_display'] = $view->current_display;
+        $arguments[":view_name_$weight_key"] = $view->name;
+        $arguments[":view_display_$weight_key"] = $view->current_display;
       }
       else {
         list($setting_view_name, $setting_view_display) = explode(':', $view->sort[$weight_key]->options['draggableviews_setting_view']);
-        $arguments[':view_name'] = $setting_view_name;
-        $arguments[':view_display'] = $setting_view_display;
+        $arguments[":view_name_$weight_key"] = $setting_view_name;
+        $arguments[":view_display_$weight_key"] = $setting_view_display;
       }
 
       // Arguments passed to view (including exposed filters).
@@ -69,8 +69,8 @@ class draggableviews_join_handler extends views_join {
         $clone_view = clone $view;
         $view_arguments = _draggableviews_eval_return($view->sort[$weight_key]->options['draggableviews_setting_arguments_php'], $view_arguments, $clone_view);
       }
-      $condition .= " AND $table[alias].args = :view_arguments";
-      $arguments[':view_arguments'] = json_encode($view_arguments);
+      $condition .= " AND $table[alias].args = :view_arguments_$weight_key";
+      $arguments[":view_arguments_$weight_key"] = json_encode($view_arguments);
     }
 
     $select_query->addJoin($this->type, $right_table, $table['alias'], $condition, $arguments);
@@ -83,4 +83,4 @@ class draggableviews_join_handler extends views_join {
       }
     }
   }
-}
\ No newline at end of file
+}
