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
,因为这是用于聚合的内容。
我正在尝试创建一个视图,显示 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
,因为这是用于聚合的内容。