select e.first_name, nvl(m.first_name,'null') "Manager" from s_emp e, s_emp m
where e.manager_id=m.id(+) order by e.first_name, "Manager"
select e.first_name, nvl(m.first_name,'null') "Manager" from s_emp e, s_emp m
where e.manager_id(+)=m.id order by e.first_name, "Manager"
select e.first_name, nvl(m.first_name,'null') "Manager" from s_emp e, s_emp m
where e.manager_id=m.id order by e.first_name, "Manager"它们三者有何异同.请高手指点

解决方案 »

  1.   

    + 表示连接方向 楼主请参考:select a.studentno, a.studentname, b.classname
          from students a, classes b
          where a.classid(+) = b.classid;
    STUDENTNO STUDENTNAM CLASSNAME
    ---------- ---------- ------------------------------
                1 周虎          一年级一班
                2 周林          一年级二班
                                 一年级三班
    以上语句是右连接:
    即"(+)"所在位置的另一侧为连接的方向,右连接说明等号右侧的所有
    记录均会被显示,无论其在左侧是否得到匹配。也就是说上例中,无
    论会不会出现某个班级没有一个学生的情况,这个班级的名字都会在
    查询结构中出现。
    反之: 
    select a.studentno, a.studentname, b.classname
           from students a, classes b
          where a.classid = b.classid(+);STUDENTNO STUDENTNAM CLASSNAME
    ---------- ---------- ------------------------------
                1 周虎          一年级一班
                2 周林          一年级二班
                3 钟林达则是左连接,无论这个学生有没有一个能在一个班级中得到匹配的部门号,
    这个学生的记录都会被显示。
      

  2.   

    对于第三个SQL语句 按照上面回复的例子 会显示:
    1 周虎          一年级一班
    2 周林          一年级二班