diff --git a/core/modules/entity/entity.query.inc b/core/modules/entity/entity.query.inc
index 840108a..f7cdf24 100644
--- a/core/modules/entity/entity.query.inc
+++ b/core/modules/entity/entity.query.inc
@@ -817,7 +817,7 @@ class EntityFieldQuery {
     $id_map['entity_id'] = $sql_field;
     $select_query->addField($base_table, $sql_field, 'entity_id');
     if (isset($this->entityConditions['entity_id'])) {
-      $this->addCondition($select_query, $sql_field, $this->entityConditions['entity_id']);
+      $this->addCondition($select_query, $base_table . '.' . $sql_field, $this->entityConditions['entity_id']);
     }
 
     // If there is a revision key defined, use it.
@@ -825,7 +825,7 @@ class EntityFieldQuery {
       $sql_field = $entity_info['entity keys']['revision'];
       $select_query->addField($base_table, $sql_field, 'revision_id');
       if (isset($this->entityConditions['revision_id'])) {
-        $this->addCondition($select_query, $sql_field, $this->entityConditions['revision_id']);
+        $this->addCondition($select_query, $base_table . '.' . $sql_field, $this->entityConditions['revision_id']);
       }
     }
     else {
@@ -850,7 +850,13 @@ class EntityFieldQuery {
     }
     $id_map['bundle'] = $sql_field;
     if (isset($this->entityConditions['bundle'])) {
-      $this->addCondition($select_query, $sql_field, $this->entityConditions['bundle'], $having);
+      if (!empty($entity_info['entity keys']['bundle'])) {
+        $this->addCondition($select_query, $base_table . '.' . $sql_field, $this->entityConditions['bundle'], $having);
+      }
+      else {
+        // This entity has no bundle, invalidate the query.
+        $select_query->where('1 = 0');
+      }
     }
 
     // Order the query.
@@ -956,4 +962,3 @@ class EntityFieldQuery {
   }
 
 }
-
diff --git a/core/modules/node/node.test b/core/modules/node/node.test
index 655bc0b..77efeed 100644
--- a/core/modules/node/node.test
+++ b/core/modules/node/node.test
@@ -2579,3 +2579,50 @@ class NodeAccessFieldTestCase extends NodeWebTestCase {
     $this->assertRaw($default, 'The updated default value is displayed when creating a new node.');
   }
 }
+/**
+ * Tests Node EFQ has prefixes
+ */
+class NodeEFQTablePrefixTestCase extends NodeWebTestCase {
+
+  public static function getInfo() {
+    return array(
+      'name' => 'Node entity field query table prefixes',
+      'description' => 'Tests that a node entity field query properly prefixes SQL column names with SQL table names',
+      'group' => 'Node',
+    );
+  }
+
+  public function setUp() {
+    parent::setUp('node_efq_table_prefix_test');
+
+    // Create an article.
+    $this->node = $this->drupalCreateNode(array('type' => 'article'));
+  }
+
+  /**
+   * Tests EFQ prefix by a simple EFQ that node_efq_table_prefix_test
+   * will use hook_query_alter to join back to node.  Any non-prefixed
+   * node columns in the EFQ will cause an exception.
+   */
+  function testNodeEFQTablePrefixes() {
+    // Run an EFQ with multiple EntityConditions.
+    $query = new EntityFieldQuery();
+    $query
+      ->entityCondition('entity_type', 'node')
+      ->entityCondition('bundle', 'article')
+      ->entityCondition('entity_id', $this->node->nid, '=')
+      ->addTag('node_efq_table_prefix_test');
+
+    // Print out the EFQ object.
+    // $this->verbose('<pre>' . print_r($query, TRUE) . '</pre>');
+    $pass = TRUE;
+    try {
+      $query->execute();
+    }
+    catch (Exception $e) {
+      $pass = FALSE;
+      $this->fail($e->getMessage());
+    }
+    $this->assertTrue($pass, t("Node EntityFieldQuery properly prefixes SQL column names with SQL table names"));
+  }
+}
diff --git a/core/modules/node/tests/modules/node_efq_table_prefix_test/node_efq_table_prefix_test.info b/core/modules/node/tests/modules/node_efq_table_prefix_test/node_efq_table_prefix_test.info
new file mode 100644
index 0000000..f45a2dd
--- /dev/null
+++ b/core/modules/node/tests/modules/node_efq_table_prefix_test/node_efq_table_prefix_test.info
@@ -0,0 +1,6 @@
+name = "Node EntityFieldQuery prefix test"
+description = "Helper module for Node entity field query table prefixes test"
+package = Testing
+version = VERSION
+core = 8.x
+hidden = TRUE
diff --git a/core/modules/node/tests/modules/node_efq_table_prefix_test/node_efq_table_prefix_test.module b/core/modules/node/tests/modules/node_efq_table_prefix_test/node_efq_table_prefix_test.module
new file mode 100644
index 0000000..477b285
--- /dev/null
+++ b/core/modules/node/tests/modules/node_efq_table_prefix_test/node_efq_table_prefix_test.module
@@ -0,0 +1,17 @@
+<?php
+
+/**
+ * @file
+ * Alters node queries with hook_query_alter to add a join to node_access.
+ * This allows testing that node columns are properly prefixed with a base table.
+ */
+
+/**
+ * Implements hook_query_alter().
+ */
+function node_efq_table_prefix_test_query_alter($query) {
+
+  if ($query->hasTag('node_efq_table_prefix_test')) {
+    $query->join('node','n2','%alias.nid = node.nid');
+  }
+}
