【发布时间】:2012-07-21 21:05:58
【问题描述】:
以下是我的表格中的以下记录:
注册学生
EnrollID StudentID SubjID
1 1 1
2 1 2
3 1 3
4 2 1
5 3 2
学生
StudentID UserID YearID FirstName LastName
1 1 1 John Doe
2 3 1 Peter Pan
3 7 1 Isaac Newton
主题
SubjID SubjCode YearID
1 English 1
2 Math 1
3 Science 1
输出应该是……
StudentID FullName
2 Peter Pan
3 Isaac Newton
我能够提出以下 SQL 语句(感谢Ic.)
SELECT s.StudentID, s.FirstName + ' ' s.LastName AS FullName
FROM Students AS s
LEFT OUTER JOIN EnrollStudents AS es ON s.StudentID = es.StudentID
GROUP BY s.StudentID, s.FirstName, s.LastName
HAVING COUNT(DISTINCT(es.SubjID)) < (SELECT COUNT(*) FROM Subjects)
有没有一种方法可以按主题过滤查询?假设我选择英语,只有 Isaac Newton 可以注册该科目。
【问题讨论】:
-
您使用的是什么 dbms + 版本?
-
@TimSchmelter SQL Server 2008
标签: sql sql-server-2008 inner-join not-exists