2010-08-06 3 views
-1

Я пытаюсь считать все градиентные эссе, но если эссе было оценено дважды или более по какой-то причине, код будет считать одно и то же эссе, сколько раз оно было оценено, есть ли способ, которым я могу сделать что эссе засчитывается только один раз?Задача MySQL COUNT

Спасибо за помощь заранее!

Вот код.

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!

ответ

2

SELECT COUNT(DISTINCT students_essays.id)

+0

не работает :( – labs

+0

@labs:. Проблемные на вашем конце вы должны иметь два разные строки с теми же students_essays.id в них. – Borealid

+0

Есть ли способ, которым я могу их комбинировать? – labs

0

Используйте LEFT JOIN InstEd из INNER JOIN

EDIT: Значение, выберите эссе, поэтому у вас есть только 1, и LEFT JOIN, что к отметкам

+0

? что значит простить мое невежество. – labs

+0

Попробуйте это: SELECT COUNT (students_essays.id) ИЗ students_essays LEFT JOIN essays_grades ON students_essays.id = essays_grades.students_essays_id –

+0

печально никакого успеха :( – labs

0

Добавить DISTINCT к вашему запросу. Или, если вам нужно только идентификатор, не заморачиваться с таблицей students_essays вообще, так как идентификатор находится в essays_grades:

select count(distinct students_essays_id) from essays_grades 
+0

DID не работает :( – labs

+0

Как это не работает? Что это? –

+0

Еще считал дубликаты. – labs