Access多表联接 按是/否字段进行查询时的问题

今天只讨论一种情况,那就是进行左外联时(Left Join)
现在有两个表A(AID,BID,equal)(其中equal字段数据类型为:是/否) B(BID,name)
单独对A表进行查询时,可以用:
select * from A where equal=0

select * from A where equal=1
进行查询

当按B Left Join A进行查询时像这样:
select B.BID,B.name,A.AID,A.equal from B Left join A on (B.BID=A.BID) where A.equal=0
进行查询时,如果B表中有一条记录在A表中有其对应的记录,则可以取出
但当B表中的某一条记录在A表不并没有对应记录时,这种方法就行不通了,
假如A表
  AID   BID   equal
  1     1     
 B表
  BID   name
  1     aaa
  2     bbb
这时两表联合表就是
  B.BID   B.name   A.AID   A.equal
  1       aaa      1    
  2       bbb
此时按上面的sql语句只能查询出第一条记录,而第二条记录却不能查询出来
如果想两条记录都查询出来可以这样写
select B.BID,B.name,A.AID,A.equal from B Left join A on (B.BID=A.BID) where A.equal=0 or A.equal is null

posted @ 2011-05-18 12:54  宝络  阅读(597)  评论(0编辑  收藏  举报