2012-04-30 2 views
1

2つの列の組み合わせに基づいてカウントを実行できますか?2つ(またはそれ以上の)列を使用するCOUNT

私は3つのテーブルがあります。

学生: Student id | Student name | Gender | Dob |

クラスレジスタ:Student id | Class id

両方のカラムは、複合主キーを構成します。

クラス:Class id | Class name | Class day

私は各クラスの男女それぞれの学生の数のカウントを実行したいと思います。

私はこれまでのところ、このクエリを思い付いた:

SELECT class_name AS 'class Name', 
    Child_gender AS 'Gender', 
    COUNT(student_id) AS 'Count' 
FROM student,classRegister,classes 
WHERE student.student_id=classRegister.student_id AND 
    classRegister.class_id=classes.class_id 
GROUP BY class_name,student_gender 
ORDER BY class_name; 

しかし、それは私の学生の何人かのための複製の結果を与えているようです。

したがって、このクエリを変更してstudent_idclass_idの組み合わせのインスタンス数を数えることはできますか?

これ試してみてください私はまだMySQLのに非常に新しいですので、これは誰も

答えて

1

のための基本的である場合、私は謝罪:

SELECT c.class_name AS 'class Name', s.Child_gender AS 'Gender', 
     COUNT(s.student_id) AS 'Count' 
FROM student s 
INNER JOIN classRegister cr ON s.student_id = cr.student_id 
INNER JOIN classes c ON cr.class_id = c.class_id 
GROUP BY s.Child_gender, s.class_id, c.class_name 
ORDER BY c.class_name 
0
SELECT c.class_name AS 'class Name', s.Child_gender AS 'Gender', 
     COUNT(DISTINCT s.student_id) AS 'Count' 
FROM student s 
INNER JOIN classRegister cr ON s.student_id = cr.student_id 
INNER JOIN classes c ON cr.class_id = c.class_id 
GROUP BY c.class_name, s.Child_gender 

あなたが同じ生徒を取得される可能性があります複数回、彼らの場合classRegisterに複数の登録があります。それは総体的に聞こえる。 COUNTのDISTINCTは、クラスごとに1回だけカウントされるようにしてください。

+0

ありがとうございます。彼らは両方とも働いた:-) – user1361276

関連する問題