有三个表,一个是人员信息号(人员编号是主关键字),一个是组信息表(组编号是主关键字),一个是前两个表的连接关系表名字叫设置表(有两个字段分别是前两个表的主关键字)。意思就是哪些人在哪个组里。
我在做程序时,界面有三个DBGRIDEH控件,一个是显示组信息的假设叫表1,另两个一个是显示未分组人员信息的假设叫表2,另一个是显示当前组中的人员信息的假设叫表3。用户可以在表2中选择多个人员,然后点击加入到该组,这样这些人就会分到表1中所选的组里去,此时表3中会增加这些人,而表2中会减少这些人。我使用三个ADOQUERY控件对应这三个DBGRIDEH控件,表2和表3的ADOQUERY控件的SQL语句不知道该怎么写,才能使表2只列出未分组的,表3显示当前组成员。

解决方案 »

  1.   

    表2:
      select * from 人员信息表 where 人员信息号 not in (select 人员信息号 from 设置表)
    表3:
      select * from 人员信息表 as a join 设置表 as b on a.人员信息号=b.人员信息号 where b.组编号=当前组号 
      

  2.   

    表2: 
      select * from 人员信息表 where 人员信息号 not in (select 人员信息号 from 设置表) 
    表3: 
      select * from 人员信息表 as a join 设置表 as b on a.人员信息号=b.人员信息号 where b.组编号=当前组号 
      

  3.   

    人員信息表加個自段不就行了,是否分組 Bit類型
    個人感覺第三個表沒必要嘛
    第一個表上面加個組編號不就得了。
      

  4.   

    表2: 
      select * from 人员信息表 where 人员信息号 not in (select 人员信息号 from 设置表) 
    表3: 
      select * from 人员信息表 as a join 设置表 as b on a.人员信息号=b.人员信息号 where b.组编号=当前组号 
      

  5.   

    我试了上面的语句,表二的语句是成功的,可以这么用,表三的就不行,老是提示FROM子句语法错误
      

  6.   

    表3: 
      select * from 人员信息表 as a innor join 设置表 as b on a.人员信息号=b.人员信息号 where b.组编号=当前组号