Index: includes/database.inc
===================================================================
RCS file: /cvs/drupal/drupal/includes/database.inc,v
retrieving revision 1.61
diff -u -r1.61 database.inc
--- includes/database.inc	11 Dec 2006 22:58:17 -0000	1.61
+++ includes/database.inc	3 Jan 2007 00:07:29 -0000
@@ -269,30 +269,30 @@
 
   if (!empty($where) || !empty($join)) {
     if (!empty($where)) {
-      $new = " WHERE $where ";
+      $new = "WHERE $where ";
     }
     $new = " $join $new";
     if (strpos($query, 'WHERE')) {
-      $replace = 'WHERE';
-      $add = 'AND';
+      $query = str_replace('WHERE', $new .'AND (', $query);
+      $insert = ') ';
     }
-    elseif (strpos($query, 'GROUP')) {
+    else {
+      $insert = $new;
+    }
+    if (strpos($query, 'GROUP')) {
       $replace = 'GROUP';
-      $add = 'GROUP';
     }
     elseif (strpos($query, 'ORDER')) {
       $replace = 'ORDER';
-      $add = 'ORDER';
     }
     elseif (strpos($query, 'LIMIT')) {
       $replace = 'LIMIT';
-      $add = 'LIMIT';
     }
     else {
-      $query .= $new;
+      $query .= $insert;
     }
     if (isset($replace)) {
-      $query = str_replace($replace, "$new $add ", $query);
+      $query = str_replace($replace, $insert . $replace, $query);
     }
   }
 
