我正在尝试计算所有评分论文,但如果一篇文章由于某种原因被评分两次或更多,那么代码会计算相同的文章,因为它已被评分多次,我可以确保论文只计算一次?
提前感谢您的帮助!
这是代码。
SELECT COUNT(students_essays.id)
FROM students_essays
INNER JOIN essays_grades ON students_essays.id = essays_grades.students_essays_id
这是我的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)
);
感谢所有人的帮助我找出了问题这甚至不是这个查询doh!
答案 0 :(得分:2)
SELECT COUNT(DISTINCT students_essays.id)
答案 1 :(得分:0)
使用INNER JOIN的LEFT JOIN
编辑:意思,选择随笔,所以你只有1,而LEFT JOIN就是标记
答案 2 :(得分:0)
将DISTINCT添加到您的查询中。或者,如果您只需要id,请不要使用students_essays表,因为id在essays_grades中:
select count(distinct students_essays_id) from essays_grades