我正在参加一个数据库管理课程,虽然我一直在为本周的作业做准备,但我已经坚持了几天的最后一个问题:“对于每个课程,列出每个课程中有多少学生major。列出班级名称,专业和学生人数。“架构如下:
<div class="wrapper-inline-block">
<div class="left-column">
<p>Float</p>
</div>
Non-float
</div>
<hr>
<div class="wrapper">
<div class="left-column">
<p>Float</p>
</div>
Non-float
</div>
我已经弄清楚如何为单个类运行此查询:
Student(*snum:* integer, *sname:* string, *major:* string, *level:* string, *age:* integer)
Class(*name:* string, *meets_at:* time, *room:* string, *fid:* integer)
Enrolled(*snum:* integer, *cname:* string)
Faculty(*fid:* integer, *fname:* string, *deptid:* integer)
我尝试执行以下查询,但内部查询没有c1的任何上下文,所以我不知道从哪里开始:
SELECT s.major, COUNT(s.snum)
FROM class c, student s, enrolled e
WHERE c.name=e.name AND s.snum=e.snum AND c.name='Class Name'
GROUP BY s.major;
那我该怎么做?
答案 0 :(得分:0)
尝试在Class
和Select
Group by
名称
SELECT c1.NAME,
s.major,
Count(s.snum)
FROM class c
INNER JOIN enrolled e
ON c.NAME = e.NAME
INNER JOIN student s
ON s.snum = e.snum
GROUP BY s.major,
c1.NAME
正如Gordan的评论中所提到的,开始使用INNER JOIN
语法,它比旧式逗号分隔加入更具可读性