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
MySQL计数问题_Mysql - Fatal编程技术网

MySQL计数问题

MySQL计数问题,mysql,Mysql,有没有办法让我数一数要展示多少未评分的论文?如果是这样,我还需要从MySQL代码中添加或删除什么 提前谢谢你的帮助 这是我的MySQL代码 SELECT students.*, students_essays.* FROM students INNER JOIN students_essays ON students.student_id = students_essays.student_id LEFT JOIN essays_grades ON students_essays.id

有没有办法让我数一数要展示多少未评分的论文?如果是这样,我还需要从MySQL代码中添加或删除什么

提前谢谢你的帮助

这是我的MySQL代码

SELECT students.*, students_essays.*  
FROM students  
INNER JOIN students_essays ON students.student_id = students_essays.student_id 
LEFT JOIN essays_grades ON students_essays.id = essays_grades.students_essays_id
WHERE essays_grades.grade_id IS NULL
ORDER BY students_essays.id DESC;
这是我的MySQL表

CREATE TABLE students_essays (
id INT UNSIGNED NOT NULL AUTO_INCREMENT,
student_id INT UNSIGNED NOT NULL,
content TEXT NOT NULL,
PRIMARY KEY (id)
);


CREATE TABLE students (
student_id INT UNSIGNED NOT NULL AUTO_INCREMENT,
student_first_name VARCHAR(255) DEFAULT NULL,
student_last_name VARCHAR(255) DEFAULT NULL,
pass CHAR(40) NOT NULL,
PRIMARY KEY (student_id)
);


CREATE TABLE essays_grades (
id INT UNSIGNED NOT NULL AUTO_INCREMENT,
grade_id INT UNSIGNED NOT NULL,
students_essays_id INT UNSIGNED NOT NULL,
student_id INT UNSIGNED NOT NULL,
PRIMARY KEY (id)
);

CREATE TABLE grades (
id INT UNSIGNED NOT NULL AUTO_INCREMENT,
letter_grade VARCHAR(2) DEFAULT NULL,
grade_points FLOAT UNSIGNED NOT NULL DEFAULT 0,
PRIMARY KEY (id)
);

就我所知,你只需要看两张表就可以了

SELECT COUNT(*) 
FROM students_essays se
WHERE NOT EXISTS(SELECT * FROM 
                 essays_grades ge
                 WHERE se.id = eg.students_essays_id)

每个学生数还是总数?我只想数一下数据库中总共有多少篇未评分的论文。只是对你的表结构做一个评论。一篇文章有可能有一个以上的分数吗?如果没有,就没有理由让
论文(分数
表)。。。您可以直接将
成绩id
存储在
学生论文
表中。这将使您的查询更容易进行。IIRC,
COUNT(*)
中的星号是您需要注意的地方:
COUNT(grade\u id)
不会计算
NULL
行,而
COUNT(*)
会计算行。+1表示正确答案,但如果只需要计数,则删除订单(浪费操作)
SELECT COUNT(*) 
FROM students_essays se
WHERE NOT EXISTS(SELECT * FROM 
                 essays_grades ge
                 WHERE se.id = eg.students_essays_id)