我需要从我的数据库中获得一个结果,其中列出了在一个以上模块中教学的任何导师。
以下是表结构:
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如何,但我无法弄清楚我是如何做到的。
答案 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