La dificultad para crear este SQL con el generador de consultas de CI radica en la parte de selección dentro de la combinación izquierda. Puede construirlo usando join() función reemplazando el parámetro $tabla con SELECT
parte:
este es el 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();