SQL Server简单查询

时间:2015-11-10 06:06:08

标签: sql-server

我的数据库中有这些表

用户,课程,学期,SelectedCourses

用户:ID,用户名,密码,EnterYear

课程: ID,姓名

学期: ID,代码

SelectedCourses: ID,SemesterID(FK到Semesters.ID),UserID(FK到Users.ID),CourseID(FK到Courses.ID)

现在,我有 2或n CourseID,我希望让用户选择此课程一起

例如:

这是我的SelectedCourses表:

enter image description here

结果必须是:

我想在 SelectedCourses 列表中找到具有CourseID(1) CourseID(2)的用户。

只有 UserID = 1 才有这两门课程!

2 个答案:

答案 0 :(得分:0)

select 
 userId,count(distinct courseId) 
from 
 selectedCourses 
where 
 courseId in (1,2)
group by userId
having count(distinct courseId) > 1

答案 1 :(得分:0)

SELECT U.UserID
FROM Users U
WHERE NOT EXISTS ( SELECT C.CID
                   FROM Course C
                   WHERE C.CId in (1,2) AND 
                   NOT EXISTS  
                   (SELECT S.CID
                    FROM SelectedCourses S
                    WHERE S.CID = C.CID AND
                          S. UserID = U.UserID)
                );

对于每个用户,我们检查此用户没有采取任何课程。

只要课程数在数据类型范围内,就可以正常工作。