【发布时间】:2016-08-12 23:57:01
【问题描述】:
我正在尝试将以下 2 个关系代数转换为标准英语,但我无法理解 INTERSECTS 到底是做什么的
我知道 INTERSECT 会找到两个 select 语句中出现的值
我设法找到了它的 SQL 查询,但我就是不知道它用简单的英语询问了什么
有人可以帮忙吗?
关系代数:
Πstudent_name(σcourse id=“CS1850“(student Natural Join enrolled)) ∩
Πstudent_name(σcourse id=“CS1840“(student Natural Join enrolled))
SQL:
SELECT student_name FROM student NATURAL JOIN enrolled WHERE
course_id='CS1850' INTERSECT SELECT student_name FROM student
NATURAL JOIN enrolled where student_name='CS1840'
第二个表达方式:
Πstudent_name(σe1.student
id=e2.student_id∧e1.course_id<>e2.course_id(student natural join
(ρe1(enrolled) × ρe2(enrolled))))
SELECT student_name FROM student NATURAL JOIN enrolled e1 NATURAL JOIN
e2 WHERE e1.student_id = e2.student_id
【问题讨论】:
-
在人类语言中:“查找所有在'CS1850'中注册的学生,并找到所有在'CS1840'中注册的学生,并返回这两个结果集的交集”,或“查找所有在'CS1850'中注册的学生两个“CS1850”和“CS1840”。”
-
@JimmyB - 我明白了 - 关于第二个有什么想法吗?
-
第二条 SQL 与代数表达式不匹配。它缺少
e1.course id<>e2.course。 -
我尽力将表达式转换为查询 - 我哪里出错了?
-
在人类语言中:“查找所有注册一门课程但同时注册的课程与第一门不同的课程的学生。”或“查找所有注册了至少两个不同课程的学生。”课程。”
标签: mysql sql relational-algebra