Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql SQL';计数';功能不工作_Mysql_Sql_Count - Fatal编程技术网

Mysql SQL';计数';功能不工作

Mysql SQL';计数';功能不工作,mysql,sql,count,Mysql,Sql,Count,我希望SQL查询返回总行数。以下是我的疑问 SELECT COUNT(*) AS tot_std FROM `student_main` AS sm, `student_subjects` AS stds, `sub_subjects` AS ss WHERE stds.`student_id` = sm.`studen. t_id` AND stds.`subs_id` = ss.`subs_id` AND stds.`subs_id` = 1

我希望SQL查询返回总行数。以下是我的疑问

SELECT COUNT(*) AS tot_std  
FROM `student_main` AS sm,
     `student_subjects` AS stds,
     `sub_subjects` AS ss
WHERE stds.`student_id` = sm.`studen. t_id`  
  AND stds.`subs_id` = ss.`subs_id`  
  AND stds.`subs_id` = 1  
  AND sm.`std_postcode` LIKE '%HA02AN%'
GROUP BY stds.`student_id`
该查询连接三个表: 1)
student\u main
它是主表,存储学生信息。 2)
sub_subjects
这是存储科目/课程信息的主表 3)
student_subjects
此表包含student_id和subs_id作为外键,并显示学生正在学习的科目

以下是
学生受试者
表的屏幕截图

现在,当我运行查询时,它应该在输出中显示3,因为总共有3个学生正在学习id为1的主题。但是,查询会给出如下输出:


请提供帮助。

通过删除
组。并学习正确的显式
JOIN
语法:

SELECT COUNT(*) AS tot_std  
FROM `student_main` sm JOIN
     `student_subjects` stds
     ON stds.`student_id` = sm.`studen. t_id` JOIN
     `sub_subjects` ss
     ON stds.`subs_id` = ss.`subs_id`  
WHERE stds.`subs_id` = 1  AND sm.`std_postcode` LIKE '%HA02AN%';

简单规则:切勿在
FROM
子句中使用逗号*始终将显式
JOIN
语法与
ON
子句一起使用。

删除
分组依据。并学习正确的显式
JOIN
语法:

SELECT COUNT(*) AS tot_std  
FROM `student_main` sm JOIN
     `student_subjects` stds
     ON stds.`student_id` = sm.`studen. t_id` JOIN
     `sub_subjects` ss
     ON stds.`subs_id` = ss.`subs_id`  
WHERE stds.`subs_id` = 1  AND sm.`std_postcode` LIKE '%HA02AN%';

简单规则:切勿在
FROM
子句中使用逗号*始终使用显式的
JOIN
语法和
ON
子句。

使用
group by
时,所有聚合函数(如
count()
)都适用于每个组,而不是group by的完整结果。按删除组。当您使用
groupby
时,所有聚合函数(如
count()
)都将应用于每个组,而不是由于groupby而产生的完整结果。按删除组。它会有用的谢谢你的回答。我已经用简单联接编写了所有查询。我希望它不会产生任何问题???@Ajmal“Simple”连接自1992年以来就被有效地弃用了。那几乎是四分之一个世纪前的事了。是你改掉这个坏习惯的时候了。从现在起我会改掉它,但我在我的项目中的很多地方都使用过它。我希望这不会造成任何问题。谢谢你的回答。我已经用简单联接编写了所有查询。我希望它不会产生任何问题???@Ajmal“Simple”连接自1992年以来就被有效地弃用了。那几乎是四分之一个世纪前的事了。是你改掉这个坏习惯的时候了。从现在起我会改掉它,但我在我的项目中的很多地方都使用过它。我希望这不会造成任何问题。