мне кажется что группировка только ради count ? тогда не должно быть price, а sum(price)
а вообще проверку картинки надо делать другим образом.
вы же делаете LEFT JOIN , соответственно из картинок присоединяются те что есть, а к тем записям с прайсами где нет картинок будут NULL записи картинок.
соответственно проверять надо :
IF((`mf`.`ID` IS NOT NULL AND `a`.`Price` > 0), 1, 0) DESC
без группировок
соответственно если есть запись в картинках (ID != null) и прайс > 0, то IF вернет 1 , в иных случаях 0
и по этим 1 и 0 произведется обратная сортировка.
т.е. сверху как раз должны быть записи с ценой и картинками.