La difficulté pour créer ce générateur de requêtes SQL avec CI réside dans la partie select à l'intérieur de la jointure gauche. Vous pouvez le construire en utilisant le join() fonction remplaçant le paramètre $table par le SELECT
partie :
voici le code 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();