有三个表,一个是人员信息号(人员编号是主关键字),一个是组信息表(组编号是主关键字),一个是前两个表的连接关系表名字叫设置表(有两个字段分别是前两个表的主关键字)。意思就是哪些人在哪个组里。 
我在做程序时,界面有三个DBGRIDEH控件,一个是显示组信息的假设叫表1,另两个一个是显示未分组人员信息的假设叫表2,另一个是显示当前组中的人员信息的假设叫表3。用户可以在表2中选择多个人员,然后点击加入到该组,这样这些人就会分到表1中所选的组里去,此时表3中会增加这些人,而表2中会减少这些人。我使用三个ADOQUERY控件对应这三个DBGRIDEH控件,表2和表3的ADOQUERY控件的SQL语句不知道该怎么写,才能使表2只列出未分组的,表3显示当前组成员。yancui 回答如下:
表2: 
  select * from 人员信息表 where 人员信息号 not in (select 人员信息号 from 设置表) 
表3: 
  select * from 人员信息表 as a join 设置表 as b on a.人员信息号=b.人员信息号 where b.组编号=当前组号 我按以上语句编写,表2的没问题了,但是表3的总是提示FROM子句语法错误。我的源代码如下:
 adoquery3.SQL.Add('select * from 人员表 as a join 设置表 as b on a.人员编号=b.人员编号 where b.组号=:id');
 adoquery3.Parameters[0].Value:=adoquery1.FieldByName('组号').AsInteger;
 adoquery3.Open;
以上代码中的字段名称暂用中文替换了。