diff --git a/modules/node.views.inc b/modules/node.views.inc
index 71a1023..f4427b3 100644
--- a/modules/node.views.inc
+++ b/modules/node.views.inc
@@ -436,6 +436,16 @@ function node_views_data() {
     ),
   );
 
+  // For some fields we need to join from the revision to the current node,
+  // so we add a pseudo-table to allow joining to the current node.
+  $data['current_node']['table']['join'] = array(
+    'node_revision' => array(
+      'table' => 'node',
+      'left_field' => 'nid',
+      'field' => 'nid',
+    ),
+  );
+
   $data['node_revision']['table']['default_relationship'] = array(
     'node' => array(
       'table' => 'node',
diff --git a/modules/node/views_handler_field_node_revision.inc b/modules/node/views_handler_field_node_revision.inc
index d29b070..63475d5 100644
--- a/modules/node/views_handler_field_node_revision.inc
+++ b/modules/node/views_handler_field_node_revision.inc
@@ -20,11 +20,13 @@ class views_handler_field_node_revision extends views_handler_field_node {
     if (!empty($this->options['link_to_node_revision'])) {
       $this->additional_fields['vid'] = 'vid';
       $this->additional_fields['nid'] = 'nid';
+      $this->additional_fields['current_vid'] = array('table' => 'current_node', 'field' => 'vid');
       if (module_exists('translation')) {
-        $this->additional_fields['language'] = array('table' => 'node', 'field' => 'language');
+        $this->additional_fields['language'] = array('table' => 'current_node', 'field' => 'language');
       }
     }
   }
+
   function option_definition() {
     $options = parent::option_definition();
     $options['link_to_node_revision'] = array('default' => FALSE, 'bool' => TRUE);
@@ -54,8 +56,9 @@ class views_handler_field_node_revision extends views_handler_field_node {
       $this->options['alter']['make_link'] = TRUE;
       $nid = $this->get_value($values, 'nid');
       $vid = $this->get_value($values, 'vid');
+      $current_vid = $this->get_value($values, 'current_vid');
       $this->options['alter']['path'] = 'node/' . $nid;
-      if ($nid != $vid) {
+      if ($vid != $current_vid) {
         $this->options['alter']['path'] .= "/revisions/$vid/view";
       }
       if (module_exists('translation')) {
