日期:2014-05-18  浏览次数:20877 次

复杂的查询
WINFROM中,我有三张数据表,想整合成一张dt,然后绑定到datagridview,
表A如下,
姓名 工号 基本工资 
张三 001 1500 
李四 002 1200 
王五 003 1600 
赵六 004 1900 
表B是 

工号 计件工资 完工日期
001 300 2008-7-12
001 200 2008-7-18
002 400 2008-7-10
002 800 2008-7-25
003 350 2008-7-19
004 600 2008-7-22

表C
工号 计时工资 完工日期
001 200 2008-7-14
001 500 2008-7-17
002 200 2008-7-12
002 300 2008-7-23
003 150 2008-7-17
004 400 2008-7-22
我想把这三张数据表整合到一块然后绑定到datagridview,形式如下

姓名 工号 基本工资 计件工资 计时工资
张三 001 1500 500 700 //此行的计件工资500是表B中300+200的和
李四 002 1200 1200 500
王五 003 1600 350 150
赵六 004 1900 600 400


需求就是先求出表B跟表C中工号相同的并且在七月的计件跟计时工资的和,作为一列,然后加到表A的后面!三张表中工号是一一对应的关系,我用的是ACCESS数据库,请各位帮帮我,项目的最后一步了!我应该表述明白了是吧!

------解决方案--------------------
select a.*,sum(b.计件工资) as 计件工资,sum(c.计时工资) as 计时工资
from 表A a inner join 表B b on.a.工号 = b.工号
inner join 表C c on b.工号 =c.工号
group by a.工号,a.姓名,a.基本工资
------解决方案--------------------
SQL code

select A.*,b.计件工资,c.计时工资 
from A inner join (select 工号,sum(计件工资) as 计件工资 from B where 完工日期 between '2008-6-30' and '2008-8-1' group by 工号) b on A.工号=b.工号
inner join (select 工号,sum(计时工资) as 计时工资 from C where 完工日期 between '2008-6-30' and '2008-8-1' group by 工号) c on A.工号=c.工号