绕来绕去的查询语句,写不出来了,请大侠赐教!!A表id,name,tyle1 张三 一年级
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怎么写这个查询语句呀?
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怎么写这个查询语句呀?
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
from A a join B b on a.id=b.aid
group by a.id;
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
功能实现了 不过没考虑效率..自己改改吧
加两个字段表示a和b么?
其实只需要设计一个字段就行了,值为c或者d