=== modified file 'sites/all/modules/biblio/biblio.pages.inc'
--- sites/all/modules/biblio/biblio.pages.inc	2010-02-25 04:35:12 +0000
+++ sites/all/modules/biblio/biblio.pages.inc	2010-03-12 23:41:34 +0000
@@ -1087,7 +1087,9 @@
 function biblio_author_page($filter = NULL) {
   global $user;
   $where = array();
+  $inner_where = array();
   $where_clause = '';
+  $inner_where_clause = '';
   $style_name = biblio_get_style();
   module_load_include('inc', 'biblio', "biblio_style_$style_name");
 
@@ -1105,24 +1107,26 @@
       $header_ext = NULL;
     }
     if ($user->uid != 1 ) {
-      $where[] = 'n.status = 1 ';
+      $inner_where[] = 'n.status = 1 ';
     }//show only published entries to everyone except admin
 
     if (count($where)) {
       $where_clause = count($where) > 1 ? 'WHERE ('. implode(') AND (', $where) .')': 'WHERE '. $where[0];
     }
+    if (count($inner_where)) {
+      $inner_where_clause = count($inner_where) > 1 ? 'WHERE ('. implode(') AND (', $inner_where) .')': 'WHERE '. $inner_where[0];
+    }
 
     $db_result = db_query('SELECT bd.cid, bd.drupal_uid, bd.name, bd.lastname,
                               bd.firstname, bd.prefix, bd.suffix, bd.initials,
-                              bd.affiliation, bd.md5, COUNT(*) AS cnt
-                            FROM {biblio_contributor} b
-                                 LEFT JOIN {biblio_contributor_data} bd ON b.cid = bd.cid
-                                 LEFT JOIN {node} n on n.vid = b.vid
-                            '. $where_clause.'
-                            GROUP BY bd.cid, bd.drupal_uid, bd.name, bd.lastname,
-                                     bd.firstname, bd.prefix, bd.suffix,
-                                     bd.initials, bd.affiliation, bd.md5
-                            HAVING COUNT(*) > 0
+                              bd.affiliation, bd.md5, b.cnt
+                            FROM {biblio_contributor_data} bd
+                                 INNER JOIN (SELECT b.cid, COUNT(*) AS cnt
+                                             FROM {biblio_contributor} b
+                                                  INNER JOIN {node} n on b.vid = n.vid
+                                             ' . $inner_where_clause . '
+                                             GROUP BY b.cid) b ON bd.cid = b.cid
+                            ' . $where_clause . '
                             ORDER BY  lastname ASC, SUBSTRING(firstname,1,1) ASC,
                             initials ASC', $filter);
 
@@ -1169,7 +1173,9 @@
 function biblio_keyword_page($filter = NULL) {
   global $user;
   $where = array();
+  $inner_where = array();
   $where_clause = '';
+  $inner_where_clause = '';
   if ($filter) {
     $filter = strtoupper($filter);
     $where[] =  "UPPER(SUBSTRING(word,1,1)) = '%s' ";
@@ -1181,19 +1187,24 @@
   }
 
   if ($user->uid != 1 ) {
-    $where[] = 'n.status = 1 ';
+    $inner_where[] = 'n.status = 1 ';
   }//show only published entries to everyone except admin
 
   if (count($where)) {
     $where_clause = count($where) > 1 ? 'WHERE ('. implode(') AND (', $where) .')': 'WHERE '. $where[0];
   }
+  if (count($inner_where)) {
+    $inner_where_clause = count($inner_where) > 1 ? 'WHERE ('. implode(') AND (', $inner_where) .')': 'WHERE '. $inner_where[0];
+  }
 
-  $db_result = db_query('SELECT bkd.kid, bkd.word, COUNT(*) AS cnt
-                         FROM {biblio_keyword} bk
-                         LEFT JOIN {biblio_keyword_data} bkd ON bkd.kid = bk.kid
-                         LEFT JOIN {node} n ON n.vid = bk.vid
-                         '. $where_clause. '
-                         GROUP BY bkd.kid, bkd.word HAVING COUNT(*) > 0
+  $db_result = db_query('SELECT bkd.kid, bkd.word, bk.cnt
+                         FROM {biblio_keyword_data} bkd
+                              INNER JOIN (SELECT bk.kid, COUNT(*) AS cnt
+                                          FROM {biblio_keyword} bk
+                                               INNER JOIN {node} n on bk.vid = n.vid
+                                          ' . $inner_where_clause . '
+                                          GROUP BY bk.kid) bk ON bkd.kid = bk.kid
+                         ' . $where_clause . '
                          ORDER BY  word ASC', $filter);
 
   while ($keyword = db_fetch_object($db_result)){

