2010-08-06 7 views
-1

Je suis en train de compter tous les essais graduées mais si un essai a été classé deux fois ou plus pour une raison quelconque le code comptera le même essai autant de fois qu'il a été graduées est-il un moyen que je peux faire sûr que l'essai n'est compté qu'une seule fois?MySQL problème COUNT

Merci pour l'aide à l'avance!

Voici le code.

SELECT COUNT(students_essays.id) 
FROM students_essays 
INNER JOIN essays_grades ON students_essays.id = essays_grades.students_essays_id 

Voici mon code 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) 
); 

tout le monde MERCI pour l'aide que je compris le problème Il était même pas cette doh de requête!

Répondre

2

SELECT COUNT(DISTINCT students_essays.id)

+0

Ça n'a pas marché :( – labs

+0

@labs:. Problème sur votre fin Vous devez avoir deux lignes différentes avec le même students_essays.id dans les – Borealid

+0

est-il possible que je peux les combiner – labs

0

Utilisez LEFT JOIN insted de INNER JOIN

EDIT: Signification, essais SELECT, vous avez seulement 1 et LEFT JOIN aux marques

+0

? que voulez-vous dire pardonner mon ignorance. – labs

+0

Essayez ceci: SELECT COUNT (de students_essays.id) DE students_essays LEFT JOIN essays_grades SUR students_essays.id = essays_grades.students_essays_id –

+0

malheureusement sans succès :( – labs

0

Ajouter DISTINCT à votre requête. Ou, si vous avez seulement besoin id, ne vous embêtez pas avec la table students_essays du tout depuis l'id est essays_grades:

select count(distinct students_essays_id) from essays_grades 
+0

N'a pas fonctionné :( – labs

+0

Comment ça n'a pas fonctionné? Que fait-il? –

+0

Vous avez encore compté les doublons – labs