如何在courseusermapping表中显示哪个用户未映射课程表

时间:2017-01-01 09:50:48

标签: sql sql-server sql-server-2008 sql-server-2005

我有一个Course Table,所有用户都可以选择相关课程并将其保存在CourseUserMapping Table中。现在我的要求是我要显示用户未在course Table中选择的所有课程并隐藏所选课程列表。

    select c.* from Course c full outer join CourseUserMapping cum on c.CID = cum.CID 
where c.CID is NULL Or cum.CID is NULL and cum.UserID='u3' 

上述查询无法正常工作。

为了更好地理解我创建了一张图片

enter image description here

1 个答案:

答案 0 :(得分:1)

将联接更改为LEFT JOIN并修改WHERE子句:

select c.*
from Course c
left join CourseUserMapping cum
    on c.CID = cum.CID and
       cum.UserID = 'u3'
where cum.CID is NULL

上面的LEFT JOIN将保留所有课程,然后仅保留那些未映射到任何用户的课程。这包含在where cum.CID is NULL条件中。