多次使用的SQL视图记录(教授多个模块的教师)

时间:2014-02-28 12:01:28

标签: sql count

我需要从我的数据库中获得一个结果,其中列出了在一个以上模块中教学的任何导师。

以下是表结构:

Student - (studentId,studentName,degree)
Module - (moduleId,moduleName,credit)
Registered - (studentId,moduleId)
Staff - (staffId,staffName,grade)
teaches - (staffId,moduleName)

我做了很多次尝试,但我做错了,而不是让导师在多个模块中教学,我得到了所有导师的清单,复制了他们教的内容。

SELECT staff.staffID,staff.staffName
FROM staff
INNER JOIN teaches
ON teaches.staffId = staff.staffId 
INNER JOIN registered
ON registered.moduleId = teaches.moduleId
INNER JOIN student
ON student.studentId = registered.studentId
WHERE staff.staffName < 1;

我需要在选择中使用count如何,但我无法弄清楚我是如何做到的。

1 个答案:

答案 0 :(得分:1)

如果选择的教师教授没有注册学生的模块,或者问题是否存在这样的情况,是否会对所选教师产生影响?因为我发现您无需在加入时添加学生已注册表格。如果我没猜到那么正确的sql应该是这样的:

    SELECT staff.staffID,staff.staffName
    FROM staff
    INNER JOIN teaches
    ON teaches.staffId = staff.staffId 
    GROUP BY staff.staff_id,staff.staffName
    HAVING COUNT(DISTINCT teaches.moduleId) > 1