db->table('valueset') ->select('VSetID, COUNT(*) as ItemCount') ->where('EndDate IS NULL') ->groupBy('VSetID'); $builder = $this->db->table('valuesetdef vd'); $builder->select('vd.*, COALESCE(ic.ItemCount, 0) as ItemCount'); $builder->join("({$itemCounts->getCompiledSelect()}) ic", 'vd.VSetID = ic.VSetID', 'LEFT'); $builder->where('vd.EndDate IS NULL'); if ($param !== null) { $builder->groupStart() ->like('vd.VSName', $param, 'both') ->orLike('vd.VSDesc', $param, 'both') ->groupEnd(); } $rows = $builder->get()->getResultArray(); return $rows; } }