Access有4张表,人员信息表里是公司所有员工的信息,部门信息表是部门及对应编号信息,职位信息表是职位及对应编号以及该职位允许报账的上限,报账信息表是某人在什么时间报了多少账的记录,详细如下:
人员信息表:
人员编号、姓名、部门编号、职位编号
1、张三、1、1
2、李四、1、2
3、王五、2、1
4、赵六、2、2
5、周七、2、2部门信息表:
部门编号、部门
1、办公室
2、财务部职位信息表:
职位编号、职位、报账上限
1、经理、1200
2、一般人员、1000报账明细表:
记录编号、人员编号、报账日期、报账额
1、2、2011-1-6、300
2、3、2011-2-4、400
3、2、2011-3-4、200
4、5、2011-4-5、700我在Delphi中用TADOQuery进行查询,想通过一次SQL查询或SQL嵌套查询得到2011年报账人员的详细信息,结果应如下:
查询结果:
人员编号、姓名、部门、职位、报账上限、已报总额、剩余可报额
2、李四、办公室、一般人员、1000、500、500
3、王五、财务部、经理、1200、400、800
5、周七、财务部、一般人员、1000、700、300
如何编写SQL查询语句?

解决方案 »

  1.   

    如果只查询生成前5列可以用:
    select 人员编号,姓名,部门,职位,报账上限 from 人员信息表,部门信息表,职位信息表 where 人员信息表.部门编号 = 部门信息表.部门编号 and 人员信息表.职位编号 = 部门信息表.职位编号如果只对报账明细表进行汇总可以用:
    select 人员编号,sum(报账额) as 已报总额如何将两者结合起来完成我上面要求的查询结果我就不知道了。我本想用嵌套SQL语句查询,但试了很久都没成功。请达者指教。
      

  2.   

    晕,前三个表会做链接,加个表就不会啦???
    去搜索一下left join 的用法吧,select 人员编号,姓名,部门,职位,报账上限 ,报账额,(报账上限 -报账额)as 剩余可报额
     
    from 人员信息表,部门信息表,职位信息表,报账明细表where 人员信息表.部门编号 = 部门信息表.部门编号 and 人员信息表.职位编号 = 部门信息表.职位编号 and  人员信息表.人员编号=报账明细表.人员编号
      

  3.   

    用group by 语句select 人员编号,姓名,部门,职位,报账上限 ,
    sum(报账额) 已报总额,报账上限 - sum(报账额) as 剩余可报额from 人员信息表,部门信息表,职位信息表,报账明细表 
    where 人员信息表.部门编号 = 部门信息表.部门编号 and 人员信息表.职位编号 = 部门信息表.职位编号 and 人员信息表.人员编号=报账明细表.人员编号
    group by 人员编号,姓名,部门,职位,报账上限
      

  4.   

    查下join的用法
    多的很
    主要你这个中文的字段,看了不习惯