首页 > 解决方案 > SQL 查询中的“ALL”概念

问题描述

关系模式:

Students (**sid**, name, age, major)

Courses (**cid**, name)

Enrollment (**sid**, **cid**, year, term, grade)

编写一个 SQL 查询,返回参加所有课程的学生的姓名。我不知道如何在 SQL 查询中捕获“ALL”的概念。

编辑:我希望能够在没有聚合的情况下编写它,因为我也想使用相同的逻辑在关系代数中编写查询。谢谢您的帮助!

标签: sql

解决方案


编写此类查询的一种方法是计算每个学生参加的课程数量和课程数量,并进行比较:

SELECT s.*
FROM   students s
JOIN   (SELECT   sid, COUNT(DISTINCT cid) AS student_courses
        FROM     enrollment
        GROUP BY sid) e ON s.sid = e.sid
JOIN   (SELECT COUNT(*) AS cnt
        FROM   courses) c ON cnt = student_cursed

推荐阅读