帮帮忙呀!!关于统计的查询!
table a table b table c
pkid deptname pkid deptid username pkid userid pay
1 hh 1 1 aa 1 1 10
2 1 bb 2 1 10
3 1 cc 3 2 10
a.pkid=b.deptid AND b.pkid=c.userid
结果是:
传一个a表中pkid,查找出b表中符合的信息,在到c表中分别统计pay的和,没有pay的为0。
pkid username pay
1 aa 20
2 bb 10
3 cc 0
这个pkid是b表中的pkid。
问题点数:20、回复次数:4Top
1 楼xingfuniao(幸福鸟)回复于 2004-11-03 09:01:33 得分 5
select c.pkid,b.username,(select sum(c.pay) from c where c.pkid=a.pkid) as pay
from c inner join a on a.pkid=c.pkid
inner join b on b.pkid=c.pkid
where a.pkid=你傳進去的idTop
2 楼jinjazz(近身剪)回复于 2004-11-03 09:07:39 得分 5
create table a
(pkid char(10),
deptname char(10))
create table b
(pkid char(10),
deptid char(10),
username char(10))
create table c
(pkid char(10),
userid char(10),
pay integer)
insert into a select '1','hh'
insert into b
select '1','1','aa'
union
select '2','1','bb'
union
select '3','1','cc'
insert into c
select '1','1',10
union
select '2','1',10
union
select '3','2',10
select b.pkid,b.deptid,b.username,isnull(s.sumpay,0) from b left join
(select userid,sum(pay) as sumpay from c group by userid) s
on b.pkid=s.userid
inner join a on a.pkid=b.deptid
where a.pkid=1
drop table a
drop table b
drop table cTop
3 楼rfq(任凤泉)回复于 2004-11-03 09:20:02 得分 5
select b.username,isnull(sum(c.pay),0) from a inner join b on a.pkid=b.deptid left join c on b.pkid=c.userid where a.pkid=1 group by b.usernameTop
4 楼guanjueweimiao(感觉微妙)回复于 2004-11-03 09:25:17 得分 5
select b.pkid,b.username,he=isnull(sum(c.pay),0) from
a left join b on a.pkid=b.deptid left join c on
b.pkid=c.userid
where a.pkid=所给pkid
group by b.pkid,b.usernameTop




