在SQL Server查询中需要帮助

时间:2016-03-29 18:35:52

标签: sql-server-2008

我有一张桌子说学生。这有2列studentid和classid

Anotehr table具有ClassID和ClassDescription的类

假设,Class有值

ClassID ClassDescription
1 A
2 B
3 C
4 D
5 E

我想创建一个查询来查找参加过A和B的学生。这应该是一个动态查询,以便下次我需要一个qry来找出已经参加过A,B和C或B,C和D的学生我应该能够使用它。

1 个答案:

答案 0 :(得分:0)

创建一个新表格filterClass作为您的恐龙来源,如

FilterID
'A'
'B'
'C'

然后您的查询

SELECT S.StudentID 
FROM Student S
JOIN Class C
  ON S.class_id = C.class_id 
JOIN filterClass F
  ON C.ClassDescription = F.FilterID
GROUP BY S.StudentID 
HAVING COUNT(C.ClassDescription) = (SELECT COUNT(FilterID) FROM filterClass)

在这种情况下,SELECT COUNT(FilterID) FROM filterClass将为3 (A,B,C)