举例:有两个表  1.school  2.student (school的主键"id" 是student的外键"s_id")我想两表关联查询,获得所有school的数据,还有school对应的student的数据于是有语句```
 select 

form
school sc ,student st
where sc.id = student.s_id
```然后问题就来了,当school表中没有对应的student的时候,school的数据也获取不到而我希望的结果是:无论school有没有对应的student,先把school的数据全部获取,如果有对应的student,同时获取student的数据请问一下大家有没有什么好的思路?

解决方案 »

  1.   

    where school.id=student.sid(+)  其他和你的一样 这个连接条件变下
      

  2.   

    解决啦select * from school s1 left join student s2 on s1.id=s2_id这个是正解
      

  3.   

    select * from school sc left join student st on sc.id = st.s_id左连接表查询,是将左表sc查询出来后,根据条件 sc.id = st.s_id与右表st进行笛卡尔积运算,不管右表 st有么有数据最终查出来的结果行数是与左表sc相同的楼主的sql是集合查询,当两个表没有数据交集时,就不会有查询结果的
      

  4.   

    ```
     select 

    form
    school sc ,student st
    where sc.id(+) = student.s_id
      

  5.   

    (+) 是Oracle 8i之前的写法,现在建议都写成left join或rigth join