2013-03-19 19 views
0

嗨,我有以下數據庫模式。返回授課人數最多的教授姓名IN 10級

Professor (EMP ID,Name,Status,Salary,Age) 
Course(Course ID,Course Name,Points) 
Works(Course ID,EMP ID,Class ID) 

我需要找到誰教人數最多的課程,10班的教授(或多個)的姓名(或名稱),我寫了下面的查詢這顯然是錯誤的。

SELECT p.empid,p.name 
FROM professor p 
INNER JOIN works w 
ON p.empid = w.empid 
AND w.classid = 10 
GROUP BY p.empid,p.name 
HAVING max(c.courseid) 

請幫我糾正。

回答

1

試試這個

SELECT 
    p.empid 
    ,p.name 
    ,COUNT(w.courseid) AS coursecount 
FROM 
    professor p 
INNER JOIN 
    works w ON p.empid = w.empid 
WHERE w.classid = 10 
GROUP BY p.empid,p.name 
ORDER BY COUNT(w.courseid) DESC 
+0

這對我感謝... – user1844638 2013-03-19 06:29:32

1

嘗試此查詢

SELECT emp_id, max(NoOfCourse) 
from Professor p, (SELECT emp_id, count(distinct Course_ID) as 'NoOfCourse' 
from works where class_Id = 10 
group by emp_id) tbl 
WHERE p.emp_id = tbl.emp_id; 
1

如果你知道將只有一個:

select p.empid, p.name, count(courseid) 
from professor p, works w 
where p.empid = w.empid 
    and w.classid = 10 
group by p.empid, p.name 
order by count(courseid) desc 
limit 1; 

否則:

select p.empid, p.name, count(courseid) 
from professor p, works w 
where p.empid = w.empid 
    and w.classid = 10 
group by p.empid, p.name 
having count(courseid) = 
    (select max(course_count) 
    from (select count(courseid) as course_count 
      from works w2 where w2.classid = 10 group by w2.empid 
     ) 
    ); 
相關問題