A dificuldade de criar esse SQL com construtor de consultas CI está na parte select dentro da junção esquerda. Você pode construí-lo usando o join() função substituindo o parâmetro $table pelo
SELECT
papel:este é o código CI final:
$q=$this->db1 ->select ('*')
->join('(
select `product_id`
,count(*)
from `sma_sale_items`
group by `product_id`
) s','p.id = s.product_id','left')
->order_by('count(*)', 'DESC')
->get('sma_products p');
return $q->result();