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 by
和 having
:
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
如何在关系代数中解决这个问题?我总是对那些 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 by
和 having
:
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