=== modified file 'includes/database.inc'
--- includes/database.inc	
+++ includes/database.inc	
@@ -255,7 +255,8 @@ function _db_rewrite_sql($query = '', $p
 }
 
 /**
- * Rewrites node, taxonomy and comment queries. Use it for listing queries.
+ * Rewrites node, taxonomy and comment queries. Use it for listing queries. Do not 
+ * use FROM table1, table2 syntax, use JOIN instead.
  *
  * @param $query
  *   Query to be rewritten.
@@ -277,11 +278,11 @@ function db_rewrite_sql($query, $primary
     $query = preg_replace('/(SELECT.*)('. $primary_table .'\.)?(?<!DISTINCT\()(?<!DISTINCT\('. $primary_table .'\.)'. $primary_field .'(.*FROM)/AUsi', '\1'. $field_to_select .'\3', $query);
   }
 
-  if (!empty($join)) {
-    $query = preg_replace('/LEFT |RIGHT |INNER |WHERE|GROUP|ORDER|$/', $join .' \0', $query, 1);
-  }
-
-  if (!empty($where)) {
+  if (!empty($where) || !empty($join)) {
+    if (!empty($where)) {
+      $new = " WHERE $where ";
+    }
+    $new = " $join $new";
     if (strpos($query, 'WHERE')) {
       $replace = 'WHERE';
       $add = 'AND';
@@ -299,10 +300,10 @@ function db_rewrite_sql($query, $primary
       $add = 'LIMIT';
     }
     else {
-      $query .= ' WHERE '. $where;
+      $query .= $new;
     }
     if (isset($replace)) {
-      $query = str_replace($replace, 'WHERE  '. $where .' '. $add .' ', $query);
+      $query = str_replace($replace, "$new $add ", $query);
     }
   }
 
=== modified file 'modules/forum.module'
--- modules/forum.module	
+++ modules/forum.module	
@@ -667,7 +667,7 @@ function forum_get_forums($tid = 0) {
     // This query does not use full ANSI syntax since MySQL 3.x does not support
     // table1 INNER JOIN table2 INNER JOIN table3 ON table2_criteria ON table3_criteria
     // used to join node_comment_statistics to users.
-    $sql = "SELECT n.nid, l.last_comment_timestamp, IF(l.last_comment_uid != 0, cu.name, l.last_comment_name) as last_comment_name, l.last_comment_uid FROM {node} n, {node_comment_statistics} l, {users} cu, {term_node} r WHERE  n.nid = r.nid AND r.tid = %d AND n.status = 1 AND n.type = 'forum' AND l.last_comment_uid = cu.uid AND n.nid = l.nid ORDER BY l.last_comment_timestamp DESC";
+    $sql = "SELECT n.nid, f.tid, n.title, n.sticky, u.name, u.uid, n.created AS timestamp, n.comment AS comment_mode, l.last_comment_timestamp, IF(l.last_comment_uid != 0, cu.name, l.last_comment_name) AS last_comment_name, l.last_comment_uid, l.comment_count AS num_comments FROM {node} n INNER JOIN {users} u ON n.uid = u.uid INNER JOIN {term_node} r ON n.nid = r.nid INNER JOIN {forum} f ON n.vid = f.vid INNER JOIN {node_comment_statistics} l ON n.nid = l.nid INNER JOIN {users} cu ON l.last_comment_uid = cu.uid WHERE n.status = 1 AND r.tid = %d";
     $sql = db_rewrite_sql($sql);
     $topic = db_fetch_object(db_query_range($sql, $forum->tid, 0, 1));
 
