Index: handlers/views_handler_relationship.inc
===================================================================
--- handlers/views_handler_relationship.inc	(revision 1305)
+++ handlers/views_handler_relationship.inc	(working copy)
@@ -63,6 +63,7 @@
     $label = !empty($this->definition['label']) ? $this->definition['label'] : $this->definition['field'];
     $options['label'] = array('default' => $label, 'translatable' => TRUE);
     $options['required'] = array('default' => FALSE);
+    $options['reverse_relation'] = array('default' => FALSE);
 
     return $options;
   }
@@ -86,6 +87,12 @@
       '#description' => t('Enable to hide items that do not contain this relationship'),
       '#default_value' => !empty($this->options['required']),
     );
+    $form['reverse_relation'] = array(
+      '#type' => 'checkbox',
+      '#title' => t('Reverse this relationship'),
+      '#description' => t('Be carefull with this option as reversing a reference can cause problems (e.g. multiple rows if the relationship if of type 1-n).'),
+      '#default_value' => !empty($this->options['reverse_relation']),
+    );
   }
 
   /**
@@ -107,6 +114,23 @@
       $def['type'] = 'INNER';
     }
 
+    //Reverse the JOIN statements (field table and referenced entity table (node, user, etc) for this relationship.
+    if (!empty($this->options['reverse_relation'])) {
+      //Store current left field for the field-table => referenced-entity table relationship.
+      $reference_field = $def['left_field'];
+      
+      //Update field table reference, set left_field to field of referenced table
+      $def['left_field'] = $this->query->table_queue[$def['left_table']]['join']->field;
+      
+      //Update entity table (e.g. node), set field to left_field of field table reference
+      //and update the left_table alias of the joined node table to the relationship 
+      //table name (would be incorrect otherwise when using more than 1 reverse relationship)
+      $this->query->table_queue[$def['left_table']]['join']->definition['field']      = $reference_field;
+      $this->query->table_queue[$def['left_table']]['join']->definition['left_table'] = $this->query->table_queue[$def['left_table']]['relationship'];
+      
+      // Rebuild the join for the base table with the updated settings.
+      $this->query->table_queue[$def['left_table']]['join']->construct();
+    }
     if (!empty($def['join_handler']) && class_exists($def['join_handler'])) {
       $join = new $def['join_handler'];
     }
