Non sono sicuro che questa sia la migliore pratica. Inoltre potrebbe non essere buono se hai molti dati nel DB. Ma vorrei suggerire.
1.Ottieni gli ID di categoria in un array.
2.Unisciti alle tabelle come segue, per ciascuna categoria. (Utilizzando un ciclo foreach per l'array)
$this->db->select('*');
$this->db->from('at_category');
$this->db->join('at_category_taxonomy', 'at_category.cat_id = at_category_taxonomy.cat_id');
$this->db->join('at_shop', 'at_category.cat_id = at_shop.shop_category');
$this->db->where('at_category', 1);
$query = $this->db->get();
nel codice sopra, $this->db->where
('at_category', ottieni ID dall'array );
3.$query
è il risultato per ogni categoria.
4.Il numero di negozi per ogni categoria può essere preso come,
$numberOfShos = $query->num_rows();