Я бы предложил:
select region.*, count(secteur.region_id) as count
from region left join secteur on region.id = secteur.region_id
group by region.id, region.field2, region.field3....
Обратите внимание, что count(table.field)
будет игнорировать нули, тогда как count(*)
будет включать их.
В качестве альтернативы,оставьте присоединение к подзапросу и используйте coalesce
, чтобы избежать нулей:
select region.*, coalesce(t.c, 0) as count
from region left join
(select region_id, count(*) as c from secteur group by region_id) t on region.id = t.region_id