我现在有一张公寓楼表,里面有BuildId,Sex,Num.一张寝室表,里面有BuildId,DoorId,还有一张学生住宿表 StudendName,BuildId,DoorId
BuildId:公寓楼号,DoorId:寝室门牌号,Sex:该栋楼住男生还是女生,Num:该楼里面一间寝室可住几人,StudentName:学生名字
现在我想用一条查询语句查询出全校所有楼里面所有寝室有空床位的信息,并显示楼号、寝室号、已入人数、可住人数。
比如说10栋101寝室一个人都没住,就显示 10 101 0 6 。现在我就是不知道怎么查询出这种寝室没人住人的信息,小弟在这等高手给解决下,谢谢了!!!
------解决方案--------------------
- SQL code
select b.BuildId,b.DoorId,c.cnt,a.Num,a.Num-IFNULL(c.cnt,0) as 可住人数from (公寓楼表 a Inner join 寝室表 b on a.BuildId=b.BuildId) left Join (select buildid,doorid,count(*) as cnt from 学生住宿表 group by BuildId,DoorId) c on b.BuildId=c.BuildId and b.DoorId=c.DoorId