2012-10-15 135 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,非常感謝! –