一个奇怪的外连接问题
现在有A表(主表),结构和数据如下:   
 serial_no			xm   
 00000000000194013768                                 时** 
 00000000000194005220                                 孟**     
 B表(从表),结构和数据如下:   
 serial_no		a_serial_no		   rq   
 12010100050000000143            00000000000194005220 
 12010100050000000161            00000000000194005220               20070411 
 12010100050000000145            00000000000194013768               20070410   
 用以下SQL文检索:   
 select      a.xm, 
                         b.rq, 
                         b.serial_no 
    from   a,b 
    where   a.serial_no   =   b.a_serial_no(+)    
    and   b.rq(+)   is   null   ;   
    结果如下:   
 rownum	xm		rq		serial_no   
    1	孟**                                                                                 12010100050000000143 
    2	时**   
    可是我预想的结果却是: 
 rownum	xm		rq		serial_no   
    1	孟**                                                                                 12010100050000000143 
    2	时** 
    3                     孟**   
    请问为什么我预想中的rownum:3没有出来? 
    如果条件不符合的话,那为什么rownum:2却能出来, 
    他们应该是一样的呀? 
    为什么rownum:1出来后,我预想的rownum:3就被过滤掉了? 
------解决方案--------------------select a.xm, 
 b.rq, 
 b.serial_no 
 from a,b 
 where a.serial_no = b.a_serial_no(+) 
 and b.rq(+) is null ; 
 等价于: 
 select a.xm, b.rq, b.serial_no 
   from a left join b on a.serial_no = b.a_serial_no and b.rq is null 
 也就是说a表左连接b表,看b表是否存在a.serial_no = b.a_serial_no and b.rq is null的纪录,如果存在,则显示相关的b表中的信息;否则,对a表中的纪录在b表中找不到纪录相匹配的话,则在查询出的结果集的对应字段中显示null,所以仅仅返回两条纪录,而不是楼主希望的3条纪录