sql - SQL 查询中的“ALL”概念
问题描述
关系模式:
Students (**sid**, name, age, major)
Courses (**cid**, name)
Enrollment (**sid**, **cid**, year, term, grade)
编写一个 SQL 查询,返回参加所有课程的学生的姓名。我不知道如何在 SQL 查询中捕获“ALL”的概念。
编辑:我希望能够在没有聚合的情况下编写它,因为我也想使用相同的逻辑在关系代数中编写查询。谢谢您的帮助!
解决方案
编写此类查询的一种方法是计算每个学生参加的课程数量和课程数量,并进行比较:
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
推荐阅读
- javascript - 如何使用 fastify & nestjs 发送文件?
- python - Python为什么我必须重新分配给变量
- javascript - 我可以从 JSON 文件中检索数据,但无法添加
- mongodb - 如何查询两个集合?
- java - 如何从java中的csv文件中删除某些字符串?
- c# - 如何将此 T-SQL 查询转换为 lambda 或 C# 中的查询语法
- emscripten - 为什么在 WebAssembly 中 ALLOW_MEMORY_GROWTH=1 失败而 TOTAL_MEMORY=512MB 成功?
- c - 删除节点会给已分配值的节点带来问题,为什么?为什么我不能在打印功能中更改节点值?
- swift - 如何在 Swift 中从文件(而不是整个文件)中读取数据块
- python-3.x - 如何将 text.concordance 附加到变量列表?