关于mysql count的用法

我有三个表:
provinces: 主键:provinceid ,province
cities: 主键:cityid,city, 外键:provinceid
areas:主键:areaid,area,外键:cityid
其实就是全国省市县区的数据库,我想要查询:

1.查询每个city的area个数
我尝试着用:
select c.city as '市',a.area,count('市')as '区县的数量' from cities c left join areas a using(cityid) group by c.city;
但是有些city是没有area的,例如东莞 中山等等,因为我用的是left join,没有area的会显示为null,但是由于group by,就算东莞 中山等地的area为null,查询出的结果东莞 中山等地区县的数量还是显示为1,该怎么写语句才能使某些没有area的city的area的数量为0

2.查询出每个province的city和area的个数

  1. select c.city as '市',(select count(a.areaid) from areas a where a.areaid = c.cityid ) from city c

看了@一只小T 的回答,第二题自己研究了半天

 select p.province as '省',(select count(c.city) from cities c where c.provinceid=p.provinceid ) as '市的数量',
    (select count(a.area) from areas a where a.cityid in 
        (select c.cityid from cities c where c.provinceid=p.provinceid)) as '区县的数量' 
            from cities c right join provinces p using(provinceid) group by province;

求问下能不能简化?