0

こんにちは、次のデータベース スキーマがあります。

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)

修正してください。

4

3 に答える 3

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
于 2013-03-19T06:22:27.220 に答える
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;
于 2013-03-19T06:22:53.220 に答える
1

あなたが知っているなら、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
          )
    );
于 2013-03-19T06:26:07.003 に答える