我建了三个表“部门表、工资表、基本信息表”,其中部门表是多级代码,有从属关系的,当我在窗体上面设计的时候,用一个树型菜单来显示部门的tree,如果选中相应结点将列出对应的工资项目,我该如何查询出这个部门对应的工资项目数据(属于该部门的下属部门也显示出来)???请赐教

解决方案 »

  1.   

    好弄呀.
    用query.sql
    select * from 部门表, 工资表, 基本信息表 where 部门表.部门='你当前tree指向的部门' and (其他约束关系)
      

  2.   

    不行的,你可能没有理解我部门表的意思。我部门表是这样的
    0001 部门一
    0002 部门二
    000201部门二科室一
    000202
    ,,,,,,
    如果按照你这么说:部门表.部门=选中tree上部门名,那么只能查询和这个选中的部门一个名字的相关信息,比如我选中的是部门二,那么只能查询出部门二的内容,但是像他们的部门是部门二科室一的就差不出来了
      

  3.   

    select * from 部门表, 工资表, 基本信息表 where 部门表.部门=left('你当前tree指向的部门',4)
      

  4.   

    select * from 工资表 where left(部门代码,length(选中tree上部门代码))=选中tree上部门代码
      

  5.   

    select * from 工资表 where left(部门代码,length(选中tree上部门代码))=选中tree上部门代码!
    以上代码如果说基本信息表中的一个字段是用部门代码而不是用部门名称的话,那将是很好实现的,可是我的基本信息表(包括个人的一些基本信息字段,部门项用部门名称为字段,而不是编号),工资表中和基本信息表挂钩的字段是员工编号,所以要想根据部门名称来查询符合条件的数据这个代码好像还是不行。
      

  6.   

    上面的有点问题
    楼主的部门表已经形成了树型结构,所以如果你在tree上选中了 0002 部门二
    那么只在部门表中找出部门代码左边四位是0002的代码就OK,然后再关联工资和基本信息表就OK
    select * from 部门表,工资表,基本表 where left(部门表部门代码,length(选中tree上部门代码))=选中tree上部门代码 and <其它条件>.
      

  7.   

    为什么不行呢?
    首先你是先在部门表中先找出该树下的所有下层节点,这个依据部门代码是没问题的
    然后你再用结果去关联基本信息表(关联字段是部门名称),找出所涉及部门的所有人员的员工编号,然后再以结果集去关联工资表(关联字段是员工编号),不就OK?select * from 部门表 a
        left join 基本信息表 b on a. 部门名称=b.部门名称
        left join 工资表 c on b.员工编号=c.员工编号
        where left(a.部门编号,length(选中tree上部门编号))=选中tree上部门编号
      

  8.   

    楼主这个树型结构在表中已经定死了,前面再加上级部门编号已经无意义了
    如果数据库结构是id,parentid,那么要获得所有下层又是另外的方法了.
      

  9.   

    wdsimon,你解释的很有道理,我去试试看,对了,我还想请教,如何实现在数据库中批量复制数据,就是说我这是工资表把,我为了方便用户操作,可以参照以前月份的数据(也就是将以前生产的工资数据复制过来)!
      

  10.   

    insert into 工资表 select '四月' as 月份.....from 工资表 where 月份='三月'