我现在要关联两个数据表,我在数据库中有两个数据表
TableA表结构如下:   TableB表结构如下:
字段名:             字段名:
id                   id
name                 name
SQL语句如下
select a.id,a.name,b.id from TableA a,TableB b where a.name='业务部' and a.id=b.id
问题如下:
如果TableA表中有10条记录,TableB表中没有记录的话,就算第一个条件a.name='业务部'满足的话,也没办法查找到任何记录,但是如果把and改成or的话同样一条记录在DBGrid表格里就会显示成三条,我想实现就算第二个条件没有被满足的话,同样也可以显示出满足第一个条件的记录,当两个条件都被满足的话就查找出满足两个条件的记录,不知这样的SQL语句应该怎么写,请高手指点!

解决方案 »

  1.   

    (select a.* from tableA a where a.name='業務部')
    union
    (select b.id from tableB b ,tableA a where b.id=a.id)
      

  2.   

    如果TableA表中有10条记录,TableB表中没有记录的话建议LZ找本书看看关联查询得内容。
      

  3.   

    大哥,你上面写的就已经有错误了。
    第二个表里有几条数据呢?
    有两条?那你的第一个表对应哪条数据?
    是不是应该查询出在table2里存在的?
      

  4.   

    我现在的这条语句要两个表都有数据查找才会找到记录,我想实现就算第二个条件没有被满足的话,同样也可以显示出满足第一个条件的记录,当两个条件都被满足的话就查找出满足两个条件的记录,不知这样的SQL语句应该怎么写,请高手指点!
      

  5.   

    select a.id,a.name,b.id from TableA a
    left join
    TableB b 
    on a.id=b.id
    where a.name='业务部'
      

  6.   

    TO:whbo(王红波(年轻人,要有所作为)) 
    我的数据库是DBISAM不支持子查询。
      

  7.   

    这句在程序里写的时候通过,运行时出错,没用过union,我知道可能是我这样写有错误,请指点。
    sql.add('select a.* from tableA a where a.name='業務部'');
    sql.add('union');
    sql.add('select b.id from tableB b ,tableA a where b.id=a.id')
      

  8.   

    重新说明一下问题,可能大家都误解了
    TableA表结构如下:   TableB表结构如下:
    字段名:             字段名:
    id                   id
    name                 name
    TableA表记录如下:   TableB表记录如下:
    id   name             id   name
    1  业务部             1     张三
    2  办公室             3     李四
    3  人事部             4     王五
    我想求一SQL语句显示:
    id    name  name
    1     张三  业务部
    3     李四  人事部
    4     王五
      

  9.   

    SELECT B.id,B.Name,A.Name FROM TABLE B LEFT JOIN TABLE A ON B.id=A.id
    WHERE 1=1