我试图从一个表中获取特定字段的计数,同时还从其他表中检索数据。查询已成功运行,但结果有限。
以下是我的表格:
学生 - studentID,fname,lname,yearLevel,rollClass
类 - classID,classCode,subjectID
科目 - subjectID,subjectName
studentclasses - studentClassID,studentID,classID
当我运行此查询时,我会从所有滚动类(大约100,000个具有77个滚动类的条目)获得完整的学生类列表。 roll类的格式为:YearlevelLetter(即10A,11S)。
SELECT
s.EQ_ID, s.rollClass, c.classCode, su.subjectName
FROM
students AS s INNER JOIN
(
studentclasses AS sc INNER JOIN
(
classes AS c INNER JOIN subjects AS su
ON c.subjectID = su.subjectID
) ON sc.classID = c.classID
) ON s.studentID = sc.studentID
但是,我想计算每个科目中每个卷班的学生人数,所以我有以下问题:
SELECT
COUNT(s.EQ_ID), s.rollClass, su.subjectName
FROM
students AS s INNER JOIN
(
studentclasses AS sc INNER JOIN
(
classes AS c INNER JOIN subjects AS su
ON c.subjectID = su.subjectID
) ON sc.classID = c.classID
) ON s.EQ_ID = sc.EQ_ID
GROUP BY s.rollClass, su.subjectName
这个查询只给出了前4个滚动类(它遇到的前4个)的结果,只有其余的不存在。
我错过了什么,当我知道数据库中有更多数据时,为什么会得到有限的结果?
我将查询直接输入到PHPMyadmin的SQL部分。所有表都使用MyASAM。
感谢您的帮助。
答案 0 :(得分:0)
如果它是phpMyAdmin的怪异,你可以尝试添加并看看会发生什么:
ORDER BY s.rollClass, su.subjectName
你不应该需要它,但是根据你的评论,它会看到它rollClass
的前4个值......
答案 1 :(得分:0)
感谢所有的帮助,感谢Shadow提供的答案。这是由PHPMyadmin的问题引起的。当我使用较新版本的PHPMyadmin将数据复制到另一台服务器时,查询显示了所有结果。
答案 2 :(得分:-1)
您的第一个查询是选择4列:
SELECT s.EQ_ID, s.rollClass, c.classCode, su.subjectName
您的第二个查询仅选择其中三个列,然后按两个分组:
SELECT COUNT(s.EQ_ID), s.rollClass, su.subjectName
这意味着它汇总了c.classCode
的不同值。也许尝试这样来汇总第一个查询的结果:
SELECT COUNT(s.EQ_ID), s.rollClass, c.classCode, su.subjectName
FROM students AS s INNER JOIN (studentclasses AS sc INNER JOIN (classes AS c INNER JOIN subjects AS su ON c.subjectID = su.subjectID) ON sc.classID = c.classID) ON s.EQ_ID = sc.EQ_ID
GROUP BY s.rollClass, c.classCode, su.subjectName