Index: wp-includes/post.php
===================================================================
--- wp-includes/post.php	(revision 14411)
+++ wp-includes/post.php	(working copy)
@@ -1559,9 +1559,10 @@
  * @since 2.5.0
  *
  * @param string|array $mime_types List of mime types or comma separated string of mime types.
+ * @param string $table_alias Optional. Specify a table alias, if needed. 
  * @return string The SQL AND clause for mime searching.
  */
-function wp_post_mime_type_where($post_mime_types) {
+function wp_post_mime_type_where($post_mime_types, $table_alias = '') {
 	$where = '';
 	$wildcards = array('', '%', '%/%');
 	if ( is_string($post_mime_types) )
@@ -1589,9 +1590,9 @@
 			return '';
 
 		if ( false !== strpos($mime_pattern, '%') )
-			$wheres[] = "post_mime_type LIKE '$mime_pattern'";
+			$wheres[] = empty($table_alias) ? "post_mime_type LIKE '$mime_pattern'" : "$table_alias.post_mime_type LIKE '$mime_pattern'";
 		else
-			$wheres[] = "post_mime_type = '$mime_pattern'";
+			$wheres[] = empty($table_alias) ? "post_mime_type = '$mime_pattern'" : "$table_alias.post_mime_type = '$mime_pattern'";
 	}
 	if ( !empty($wheres) )
 		$where = ' AND (' . join(' OR ', $wheres) . ') ';
Index: wp-includes/query.php
===================================================================
--- wp-includes/query.php	(revision 14411)
+++ wp-includes/query.php	(working copy)
@@ -2027,13 +2027,14 @@
 				$post_ids = get_objects_in_term($term_ids, $taxonomy);
 				if ( !is_wp_error($post_ids) && !empty($post_ids) ) {
 					$whichcat .= " AND $wpdb->posts.ID IN (" . implode(', ', $post_ids) . ") ";
-					if ( '' === $post_type ) {
+					if ( empty($post_type) ) {
 						$post_type = 'any';
 						$post_status_join = true;
 					} elseif ( in_array('attachment', (array)$post_type) ) {
 						$post_status_join = true;
 					}
-					$q['post_status'] = 'publish';
+					if ( empty($q['post_status']) )
+						$q['post_status'] = 'publish';
 				} else {
 					$whichcat = " AND 0 ";
 				}
@@ -2084,8 +2085,10 @@
 
 		// MIME-Type stuff for attachment browsing
 
-		if ( isset($q['post_mime_type']) && '' != $q['post_mime_type'] )
-			$whichmimetype = wp_post_mime_type_where($q['post_mime_type']);
+		if ( isset($q['post_mime_type']) && '' != $q['post_mime_type'] ) {
+			$table_alias = $post_status_join ? $wpdb->posts : '';
+			$whichmimetype = wp_post_mime_type_where($q['post_mime_type'], $table_alias);
+		}
 
 		$where .= $search . $whichcat . $whichauthor . $whichmimetype;
 
