没猜错的话,市表里的id是省id?以此类推? select count(*) from 用户表 where id in ( select xid from 县表 where id in ( select cid from 市表 where id in ( select id from 省表 where sname = '某省' ) ) )
select count(*) from 省表,市表,县表,人员表 where 省表.id = 市表.id and 市表.cid = 县表.id and 人员表.id = 县表.xid group by 省表.id
我觉得这道题出的有问题,这是面试的一道题,用户的yid是什么
应该是cid =省.id xid=cid yid=用户id 我是这样的逻辑。。
用自然连接逻辑上有可能存在漏洞,一个省没人,则不会被统计,推荐用外连接select sname,count(*) from 省表 left join 市表 on 省表.id =cid left join 县表 on 市表.cid = xid left join 人员表 on 县表.id=yid
select count(*) from 用户表 where id in
(
select xid from 县表 where id in
(
select cid from 市表 where id in
(
select id from 省表 where sname = '某省'
)
)
)
where 省表.id = 市表.id
and 市表.cid = 县表.id
and 人员表.id = 县表.xid
group by 省表.id
我觉得这道题出的有问题,这是面试的一道题,用户的yid是什么
省表 left join 市表 on 省表.id =cid
left join 县表 on 市表.cid = xid
left join 人员表 on 县表.id=yid