【发布时间】:2012-04-17 03:47:48
【问题描述】:
我正在尝试编写一条 SQL 语句来查找表中对于一个字段包含相同值的所有行。但是,我只想为单独的属性返回具有 不同 值的行。这有点难以解释。
我有一个带有架构的教师表:
TeacherName varchar(50)
CourseN int
Quarter varchar(50)
三个字段组合构成主键,所以只要季度不同,同一位老师就可以教授同一门课程。我要解决的问题是,如何返回至少教授两门不同课程(不分季度)的所有教师的(不同)姓名?
这是一个实验室,我已经尝试解决这个问题大约一个星期了,但我就是想不通,所以我想我会来这里。上一个问题要求找出至少教过两次相同课程的教师的不同姓名列表。我想出了这个:
SELECT DISTINCT [TeacherName]
FROM [Teacher]
GROUP BY [TeacherName],
[CourseN]
HAVING COUNT( [CourseN] ) >= 2
不过,我现在要解决的问题是类似的,但同样,我只需要不止一次出现在表格中并教授至少两门不同课程的教师。我也非常感谢一些指导,而不仅仅是答案,因为我准确了解数据库在做什么很重要。
【问题讨论】:
-
您需要哪些方面的帮助/指导?
-
弄清楚如何编写我需要的 SQL。在尝试解决这个问题时,我经历了许多思考过程。我想我首先需要一种方法来区分出现两次相同课程的老师和出现两次不同课程的老师。我在这里写了一个这样的查询:“select distinct teachername, coursen from teacher order by teachername”。这结合了教授同一门课程的教师,我认为这是一个很好的起点。但是现在我完全不知道如何将其用作子查询来仅返回那些教师。