+ -
当前位置:首页 → 问答吧 → 绕来绕去的查询语句,写不出来了,请大侠赐教!!

绕来绕去的查询语句,写不出来了,请大侠赐教!!

时间:2011-09-30

来源:互联网

绕来绕去的查询语句,写不出来了,请大侠赐教!!

A表

id,name,tyle

1 张三 一年级
2 李四 二年级

B表
a.id , defen ,style1,style2
1 10 c null
1 9 null d
2 8 c null
2 3 null d
2 1 null d

我想提取

姓名 年级 总分 几个c给的分 几个d给的分

张三 一年级 19 1 1

李四 二年级 12 1 2



怎么写这个查询语句呀?

作者: ranranrain   发布时间: 2011-09-30

在线等啊!!

作者: ranranrain   发布时间: 2011-09-30

SQL code

SELECT a.*,count(style1) as style1, count(style1) as style1,sum(defen) as defen FROM `a` left join b on (a.id=b.aid) group by a.id

作者: yangball   发布时间: 2011-09-30

1.数据库中b的a.id改为sid

2.select a.id,name,tyle,sum(defen),count(style1),count(style2) from a join b on a.id=b.sid group by a.id;

作者: ohmygirl   发布时间: 2011-09-30

引用 2 楼 yangball 的回复:
SQL code

SELECT a.*,count(style1) as style1, count(style1) as style1,sum(defen) as defen FROM `a` left join b on (a.id=b.aid) group by a.id



牛+

作者: wbandzlhgod   发布时间: 2011-09-30

select a.name,a.style,count(b.defen),count(b.tyle1),count(b.style2) 
from A a join B b on a.id=b.aid
group by a.id;

作者: hellonobody   发布时间: 2011-09-30

SQL code

select a.name,
          a.style,
          c.zongfen,
          c.c,
          c.d
from  a 
left join 
      (select b.id,
                 sum(b.defen) zongfen,
                 count(case b.style1 when 'c' then b.style1 end)  c,
                 count(case b.style2 when 'd' then b.style2 end) d 
       from b group by id) c 
on a.id=c.id 

功能实现了 不过没考虑效率..自己改改吧

作者: autumnkiller   发布时间: 2011-09-30

表字段设计有问题,如果现在又有新需求需要统计得a和b的次数,你会怎么做?
加两个字段表示a和b么?
其实只需要设计一个字段就行了,值为c或者d

作者: ohmygirl   发布时间: 2011-09-30

受教了

作者: wobushiyi   发布时间: 2011-09-30

相关阅读 更多