注册 登录
编程论坛 VB6论坛

求VB数据库跨表分类计算后合并语句,急!

chenjun302 发布于 2013-07-18 10:01, 663 次点击
表a
班级     人数     
一班     20
一班     20
二班     13
二班     27

表b
班级      签到
一班       10
一班       28
二班       17  
二班       10
二班       12   

想得到结果:
        总人数    实到人数     出勤率
一班      40          38          95%
二班      40          39          97.5%


请教各位大侠,该语句如何写???
SQL="select sum(a.人数) as 总人数,sum(b.签到) as 实到人数 from a.班级,b.班级 where a.班级=b.班级 group by a.班级,b.班级 "

错误,应该如何修改,谢谢

[ 本帖最后由 chenjun302 于 2013-7-18 10:03 编辑 ]
4 回复
#2
风吹过b2013-07-18 12:44
from 后面是 表的名字。这里写成字段名。

没有 数据库运行环境,无法帮你测试。
再小型的都没。
#3
wxflw2013-07-18 17:17
晚上回家看看给你个参考
#4
lowxiong2013-07-18 19:00
select 班级,sum(人数) as 人数合计,(select sum(签到) from 表2 where 表1.班级=表2.班级) as 签到合计,(str(100*(select sum(签到) from 表2 where 表1.班级=表2.班级)/sum(人数))+'%') as 签到率 from 表1 group by 班级

在access查询中运行通过,见下图:
只有本站会员才能查看附件,请 登录
#5
lowxiong2013-07-19 09:37
你自己的语句有两句错误,一处错误为两个汉字符的逗号修改为英文字符的逗号,第二处错误为from后应跟的是表名,而不是字段名,因此修改如下可正常执行,但结果不对,你的语句类似内连接语句。
SQL="select sum(a.人数) as 总人数,sum(b.签到) as 实到人数 from a,b where a.班级=b.班级 group by a.班级,b.班级 "
该语句运行后的结果如下(顺序为二班、一班):
120   78
80    76
为什么是这个结果,有待分析,用inner join、left join也是这个结果。

1