2012-10-15 92 views
1

我不知道我会怎么做:最喜欢的课程查询

我有三个表:

Student(StudentID, StudentName) 
Course(CourseID, CourseName) 
StudentCourse(StudentID, CourseID) -- junction table to assign courses to students 

我将如何查询来获取基础上,在最喜欢的课程条件 即“入学人数最多的课程是 最喜欢的课程”

帮助??

我已经安装的模式在SQL小提琴

SQLFiddle

+1

那你试试? – BugFinder

+0

我在小提琴更新,等待 –

+0

你可以看到,我已经作出了查询 –

回答

1
SELECT TOP 1 WITH TIES COURSEID 
FROM STUDENTCOURSE 
GROUP BY COURSEID 
ORDER BY Count(*) DESC 
+0

如果有最高数目相同的课程,该怎么办?例如数学= 2,科学= 2,英语= 2。只有一个记录将显示,因为“顶部1” –

+0

TOP 1将返回只有一个,如果我有两个最喜欢的课程,看到小提琴 –

+0

添加'WITH TIES'以检索所有顶尖课程。 – Gidil

6

使用TOP...WITH TIES

SELECT TOP 1 WITH TIES c.CourseName, 
     COUNT(c.CourseID) totalCount 
FROM student a 
     INNER JOIN studentcourse b 
      ON a.studentID = b.studentID 
     INNER JOIN course c 
      ON b.courseID = c.courseID 
GROUP BY c.CourseName 
ORDER BY totalCount DESC 

WITH TIES尝试它表明,拥有数相同数量的最高记录。

SQLFiddle Demo

+0

不知道'WITH TIES' + 1 – Jodrell

+0

@JohnWoo,非常感谢! –