diff --git a/includes/database.inc b/includes/database.inc
index 2c3fe975b87bbf0f922bf4b9b04e8d2a4417a37f..507a37774c94d0e09282eb620269fcfafe190a81 100644
--- a/includes/database.inc
+++ b/includes/database.inc
@@ -255,7 +255,7 @@ function _db_rewrite_sql($query = '', $primary_table = 'n', $primary_field = 'ni
 }
 
 /**
- * Rewrites node queries.
+ * Rewrites node, taxonomy and comment queries. Use it for listing queries.
  *
  * @param $query
  *   Query to be rewritten.
@@ -278,7 +278,7 @@ function db_rewrite_sql($query, $primary_table = 'n', $primary_field = 'nid',  $
   }
 
   if (!empty($join)) {
-    $query = preg_replace('|FROM[^[:upper:]/,_]+|','\0 '. $join .' ', $query);
+    $query = preg_replace('/LEFT |RIGHT |INNER |WHERE|GROUP|ORDER|$/', $join .' \0', $query, 1);
   }
 
   if (!empty($where)) {