2017-10-06 74 views
1

我無法回到最常見的當然 的問題是:編寫一個查詢返回的最常見的當然CourseNameSQL(兩個表)查詢最受歡迎的課程

StudentCourses: 
    StudentCourseID 
    StudentID 
    CourseID 

Courses: 
    CourseID 
    CourseName 

我有這

SELECT CourseName 
From Courses c 
WHERE CourseID = (SELECT Count(CourseID) AS Course_Value 
       FROM StudentCourses 
       Group BY CourseID 
       Order BY Course_Value DESC 
       LIMIT 1; 

我知道它不正確,但我正確使用COUNT找到正確的最流行的課程嗎?

回答

3

對於這種類型的問題,學會用明確的jointop

select top (1) c.courseid, c.coursename, count(*) as cnt 
from studentcourses sc join 
    courses c 
    on sc.courseid = c.courseid 
group by c.courseid, c.coursename 
order by count(*) desc; 

如果你想聯繫,然後使用top with ties

4
SELECT Top 1 CourseName 
FROM Courses 
JOIN StudentCourses 
    ON Courses.CourseId = StudentCourses.CourseId 
GROUP BY CourseName 
ORDER BY Count(CourseName) DESC 
+0

哈 - 你打我吧,@戈登:-) – Brett