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

多次使用的SQL视图记录(教授多个模块的教师),sql,count,Sql,Count,我需要从我的数据库中得到一个结果,其中列出了在多个模块中教学的所有导师 以下是表格结构: Student - (studentId,studentName,degree) Module - (moduleId,moduleName,credit) Registered - (studentId,moduleId) Staff - (staffId,staffName,grade) teaches - (staffId,moduleName) 我做了很多尝试,但我做得不对,我没有让老师教多个模块

我需要从我的数据库中得到一个结果,其中列出了在多个模块中教学的所有导师

以下是表格结构:

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;
选择staff.staffID,staff.staffName
工作人员
内联教学
ON.staffId=staff.staffId
内部联接已注册
在registed.moduleId=teachs.moduleId上
内联学生
在student.studentId=registered.studentId上
其中staff.staffName<1;

我需要在“选择一些方式”中使用count,但我不知道如何执行此操作

如果所选教师教授的模块没有注册学生,是否会对其产生影响,或者应该问的问题是,是否存在这种情况?因为我突然想到,您不需要将学生注册表添加到您的联接中。如果我猜没有必要,那么正确的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

我认为,为了让教2个以上模块的员工参加培训,您需要将moduleId保留在teaches中,而不是moluleName中,因为这样很容易获得。@Shekhar-well
teaches
应该使用
moduleId
,但是
moduleName
应该是可用的(假设它是唯一的)。