我试图创建一个视图,返回每个加州学生注册的课程数量。我的“学生”表中列出了4个CA学生,因此它应该返回那么多行。
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';但是,此查询只返回包含一个学生信息的一行,以及所有CA学生都参加的课程总数(在本例中为14,因为每个学生都注册在3-5个班级)。
我最近创建了一个类似于此的视图(在不同的DB中),它运行良好,执行了多行,所以我不知道出了什么问题?对不起,如果这是一个混乱的问题,我是新的SQL和StackOverflow!提前感谢您的任何建议!
发布于 2017-11-21 01:16:57
在查询/视图中缺少一个聚合步骤:
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解释这意味着要计算整个表的数量。还请注意,我只在上面的查询中选择了ID,因为这是用于聚合的。
https://stackoverflow.com/questions/47403677
复制相似问题