日期:2014-05-16  浏览次数:20702 次

外连接查询
//查询某个资源表里面的符合要求的列表
select * from resource
where organization=6 and type=2 and del_flag=0;

//查询岗位课程里的已经配置好的课程列表
select * from job_course
where organization=6 and source=2 and del_flag=0;

//查询没有配置好的资源列表(XXXX错误)
select * from job_course jc WHERE jc.organization=6 and jc.del_flag=0 RIGHT OUTER JOIN resource r where r.organization=6 and r.del_flag=0 on jc.course=r.id and jc.source=2 where jc.id is null;

//查询没有配置的资源列表,注意下面我使用的是右连接哟,但是我是先过滤符合条件的岗位课程列表和符合条件的资源列表,设想一下这样过滤之后再进行外连接的匹配则效率高了很多,---------
则接下来的疑问是这样过滤会不会去掉一些数据啊,剩余的数据做外连接,对,是的,因为过滤资源是对的,(首先我要找到符合条件的全部的资源,不论是添加的还是未添加的,都给查询出来,然后再去掉已经添加(WHERE tjc.id IS NULL)的就OK了)
SELECT * FROM
(SELECT * FROM job_course WHERE organization=6 and del_flag=0 and source=2) AS tjc
RIGHT OUTER JOIN
(SELECT * FROM resource WHERE organization=6 and del_flag=0 and type=2) AS tr
ON tjc.course = tr.id
WHERE tjc.id IS NULL;