O.我已经尝试解决这个问题两天了,没有成功,我的所有工作都因此而停止。
切入正题:
我在这三个表之间有一个多对多的关系:
Students
Students_Courses
Courses
我需要确切知道哪些学生参加了物理、微积分和 CS101
他们可以参加其他课程,但我需要知道这三门课程中有哪些。
SELECT * FROM Students A
INNER JOIN Students_Courses B on A.id = B.student
INNER JOIN Courses C on B.course = C.id
WHERE C.name = Physics OR C.name = calculus OR C.name = cs101
但。这将返回任何这些课程的学生。
如果我将 WHERE 子句更改为:
WHERE C.name = Physics AND C.name = calculus AND C.name = cs101
它不会返回任何内容,因为没有与所有三个匹配的行。
我该怎么做呢?我在这里缺少的 SQL 理论是什么?我意识到 SQL 按行工作,所以我需要按行过滤。但我确信这是一个常见的查询,我只是找不到理论的名称或我在这里缺少的东西来解决它。
我确实通过选择所有这些课程然后过滤哪些学生匹配这三个课程来解决它,但这是在应用程序中,我希望这可能是一个单一的 SQL 查询。
非常感谢您的帮助。