diff -urp privatemsg/privatemsgapi/privatemsgapi.inc privatemsg_new/privatemsgapi/privatemsgapi.inc
--- privatemsg/privatemsgapi/privatemsgapi.inc	2008-09-20 21:22:20.000000000 +0100
+++ privatemsg_new/privatemsgapi/privatemsgapi.inc	2008-09-22 00:02:16.094109400 +0100
@@ -67,10 +67,11 @@ function _privatemsg_assemble_query($que
   $SELECT = array();
   $INNER_JOIN = array();
   $WHERE = array();
+  $GROUP_BY = array();
   $UNION_SELECT = array();
   $UNION_INNER_JOIN = array();
   $UNION_WHERE = array();
-  $GROUP_BY = array();
+  $UNION_GROUP_BY = array();
   $ORDER_BY = array();
   $QUERY_ARGS = array();
   $primary_table = '';
@@ -79,10 +80,11 @@ function _privatemsg_assemble_query($que
     'select'      => $SELECT,
     'inner_join'  => $INNER_JOIN,
     'where'       => $WHERE,
+    'group_by'    => $GROUP_BY,
     'union_select'       => $UNION_SELECT,
     'union_inner_join'  => $UNION_INNER_JOIN,
     'union_where'       => $UNION_WHERE,
-    'group_by'    => $GROUP_BY,
+    'union_group_by'    => $UNION_GROUP_BY,
     'order_by'    => $ORDER_BY,
     'query_args'  => $QUERY_ARGS,
     'primary_table'  => $primary_table,
@@ -109,10 +111,11 @@ function _privatemsg_assemble_query($que
   $SELECT = $fragments['select'];
   $INNER_JOIN = $fragments['inner_join'];
   $WHERE = $fragments['where'];
+  $GROUP_BY = $fragments['group_by'];
   $UNION_SELECT = $fragments['union_select'];
   $UNION_INNER_JOIN = $fragments['union_inner_join'];
   $UNION_WHERE = $fragments['union_where'];
-  $GROUP_BY = $fragments['group_by'];
+  $UNION_GROUP_BY = $fragments['union_group_by'];
   $ORDER_BY = $fragments['order_by'];
   $QUERY_ARGS = $fragments['query_args'];
   $primary_table = $fragments['primary_table'];
@@ -133,9 +136,13 @@ function _privatemsg_assemble_query($que
       $str_where = '('. implode(') AND (', $WHERE) .')';
       $query .= " WHERE {$str_where}";
     }
+    if (!empty($GROUP_BY)) {
+      $str_group_by = ' GROUP BY '. implode(", ", $GROUP_BY) ;
+      $query .= " {$str_group_by}";
+    }
     if (!empty($UNION_SELECT)) {
       $str_union_select = implode(", ", $UNION_SELECT);
-      $query .= "UNION SELECT {$str_union_select} FROM ". $primary_table;
+      $query .= " UNION SELECT {$str_union_select} FROM ". $primary_table;
     }
     if (!empty($UNION_INNER_JOIN)) {
       $str_union_inner_join = implode(' ', $UNION_INNER_JOIN);
@@ -145,9 +152,9 @@ function _privatemsg_assemble_query($que
       $str_union_where = '('. implode(') AND (', $UNION_WHERE) .')';
       $query .= " WHERE {$str_union_where}";
     }
-    if (!empty($GROUP_BY)) {
-      $str_group_by = ' GROUP BY '. implode(", ", $GROUP_BY) ;
-      $query .= " {$str_group_by}";
+    if (!empty($UNION_GROUP_BY)) {
+      $str_union_group_by = ' GROUP BY '. implode(", ", $UNION_GROUP_BY) ;
+      $query .= " {$str_union_group_by}";
     }
     if (!empty($ORDER_BY)) {
       $str_order_by = ' ORDER BY '. implode(", ", $ORDER_BY) ;
