php - 使用 COUNT (PHP MySQL) 添加行号并显示总数

标签 php mysql count

我正在尝试运行一个查询,将一个类(class)的科目总数相加。一个类(class)有很多科目。在教师(用户表)和类(class)之间有一个“teachersclasses”表。这些原则听起来很简单,但我在让我的页面显示每个类(class)的科目数量(与老师直接相关)时遇到了一些麻烦

这就是我到目前为止所拥有的,尝试将 COUNT 与嵌套的 SELECT 一起使用:

SELECT (SELECT count(*) FROM subjects WHERE subjects.classid = class.classid) AS total_subjects, class.classname, class.classid 

来自类

然后我调用“num_subjects”以在 while 循环中显示总数:

            <?php echo $row['total_subjects']?>

从上面,我收到了一个类(class)的总科目,但在同一表行(一个类(class))和我的另一个 while 循环不再运行,它返回与老师相关的所有类(class):(。 .. 现在有点乱!

我知道要返回特定教师的类(class),我可以在“teacherid” session 中做一个额外的 WHERE 子句,但我认为我的查询对我来说太复杂了,到处都会出现错误。任何人都可以快速解决这个问题!非常感谢

最佳答案

您的查询可能不是最优的。将其重写为连接可能是个好主意:

SELECT
    total_subjects,
    class.classname,
    class.classid 
FROM class
JOIN (
    SELECT classid, count(*) AS total_subjects
    FROM subjects
    GROUP BY classid
) AS T1
ON T1.classid = class.classid

至于你的问题,你不需要两个循环。这是一个包含三列的单一结果集,正如我的重写所清楚显示的那样。只需一个循环即可读取所有结果。

关于php - 使用 COUNT (PHP MySQL) 添加行号并显示总数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2603565/

相关文章:

MySQL:大型 VARCHAR 与 TEXT?

jquery - 获取上传文件数

PHP输出文本渐变的html代码或 "rainbow text"之类的

php - 如何使用 order by 获得折扣价

mysql - 使用原始 SQL 查询从数据库中获取满足我需求的所有记录

reporting-services - 如何使用 SSRS 报表表达式统计数据集的记录

C++显示元音和辅音并计数

php - 创建将从 url 中提取图像名称的 javascript RegEx

php - 将行转换为列

php - 在 mysql 列中选择包含字符串的行