Hi Ian (if you haven't given up),
I'm very new to this, so apologies for the messy code, but we had the same problem.
count(distinct *) is where the error is; it's generated in catalog\includes\classes\split_page_results.php
As a quick and dirty fix I just added the following:
// Mod - added line below below to avoid sql error on catalog/specials.php
if ($count_string = 'distinct *') $count_string = 'distinct p.products_id';
under
if (strpos($this->sql_query, 'distinct') || strpos($this->sql_query, 'group by')) {
$count_string = 'distinct ' . tep_db_input($count_key);
} else {
$count_string = tep_db_input($count_key);
}
( at about line 53 in catalog\includes\classes\split_page_results.php )
I don't have time just now to look into why it's trying to build the expression the wrong way, but at least this fixes it after it does so.
Someone may be along shortly with a more elegant solution!