SQL 仅查看 returns 一行

SQL View only returns one row

我正在尝试创建一个视图,显示 return 每个加州学生注册的课程数量。我的 'Students' table 中列出了 4 名加州学生,所以它应该 return 那么多行。

create or replace view s2018_courses as 
select Students.*, COUNT(Current_Schedule.ID) EnrolledCourses
from Students, Current_Schedule
where Students.ID = Current_Schedule.ID AND state='CA';

然而,此查询只有 return 一行包含一个学生的信息,以及所有 CA 学生参加的课程总数(在本例中为 14,因为每个学生都注册了 3-5 类).

我最近创建了一个与此类似的视图(在不同的数据库中)并且它运行良好并执行了多行,所以我不确定出了什么问题?抱歉,如果这是一个令人困惑的问题,我是 SQL 和 Whosebug 的新手!!预先感谢您的任何建议!

您在 query/view 中缺少聚合步骤:

CREATE OR REPLACE VIEW s2018_courses AS 
SELECT
    s.ID, COUNT(cs.ID) EnrolledCourses
FROM Students s
INNER JOIN Current_Schedule cs
    ON s.ID = cs.ID
WHERE
    state = 'CA'
GROUP BY
    s.ID;

您当前查询的逻辑问题是您使用的 COUNT(*) 没有 GROUP BY,并且 MySQL 将此解释为您想要计算整个table。另请注意,我在上面的查询中仅 select ID,因为这是用于聚合的内容。