SQL 到关系代数

SQL to Relation Algebra

如何在关系代数中解决这个问题?我总是对那些 GROUP BY 和 HAVING COUNT 感到困惑...无法真正表述。

SELECT DISTINCT Name
FROM studies, course
WHERE (SELECT COUNT(course_id) FROM studies
GROUP BY course_id HAVING COUNT (course_id) > 1) >= 2
AND (SELECT course_id FROM studies
GROUP BY course_id HAVING COUNT (course_id) > 1) = course.course_id;

如果我没有正确理解你的评论,那么你只需要 join 将表格放在一起并使用单个 group byhaving:

select c.course_id, c.name
from course c
   join studies s on c.course_id = s.course_id
group by c.course_id, c.name
having count(s.course_id) > 1