Index: modules/forum/forum.module =================================================================== RCS file: /cvs/drupal/drupal/modules/forum/forum.module,v retrieving revision 1.448.2.7 diff -p -u -p -r1.448.2.7 forum.module --- modules/forum/forum.module 3 Jun 2009 18:27:48 -0000 1.448.2.7 +++ modules/forum/forum.module 27 Oct 2009 21:24:43 -0000 @@ -495,11 +495,31 @@ function forum_get_forums($tid = 0) { $_forums = taxonomy_get_tree($vid, $tid); if (count($_forums)) { - - $counts = array(); - - $sql = "SELECT r.tid, COUNT(n.nid) AS topic_count, SUM(l.comment_count) AS comment_count FROM {node} n INNER JOIN {node_comment_statistics} l ON n.nid = l.nid INNER JOIN {term_node} r ON n.vid = r.vid WHERE n.status = 1 GROUP BY r.tid"; - $sql = db_rewrite_sql($sql); + $counts = array(); + $sql = " + SELECT r.tid AS tid, n.nid AS nid, l.comment_count AS nid_comment_count + FROM {node} n + INNER JOIN {node_comment_statistics} l ON n.nid = l.nid + INNER JOIN {term_node} r ON n.vid = r.vid + WHERE n.status = 1 + GROUP BY r.tid, n.nid, l.comment_count"; + $sql_rewritten = db_rewrite_sql($sql); + if ($sql_rewritten == $sql) { + $sql = " + SELECT r.tid, COUNT(n.nid) AS topic_count, SUM(l.comment_count) AS comment_count + FROM {node} n + INNER JOIN {node_comment_statistics} l ON n.nid = l.nid + INNER JOIN {term_node} r ON n.vid = r.vid + WHERE n.status = 1 + GROUP BY r.tid"; + $sql = db_rewrite_sql($sql); + } + else { + $sql = " + SELECT tid, COUNT(nid) AS topic_count, SUM(nid_comment_count) AS comment_count + FROM ($sql_rewritten) AS forum_content_list + GROUP BY tid"; + } $_counts = db_query($sql); while ($count = db_fetch_object($_counts)) { $counts[$count->tid] = $count;