ここに私の問題があります。私は2つのテーブルの科目と成績を持っています。テーブル内のすべての要素に対して結合クエリが正しく機能しない
CREATE TABLE `grades` (
`gradesID` int(11) NOT NULL,
`studentBook` int(11) DEFAULT NULL,
`subjectID` varchar(5) DEFAULT NULL,
`grade` int(5) DEFAULT NULL,
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
INSERT INTO `grades` (`gradesID`, `studentBook`, `subjectID`, `grade`) VALUES
(1, 1034, 'AD356', 9),
(2, 1034, 'CS102', 10),
(3, 1034, 'CS103', 9),
(4, 1034, 'CS220', 5)
CREATE TABLE `subjects` (
`subjectID` varchar(5) NOT NULL,
`name` varchar(50) DEFAULT NULL,
`espb` smallint(6) DEFAULT NULL,
`number_of_classes_per_week` smallint(6) DEFAULT NULL,
`number_of_practices_per_week` smallint(6) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
--
-- Dumping data for table `subjects`
--
INSERT INTO `subjects` (`subjectID`, `name`, `espb`, `number_of_classes_per_week`, `number_of_practices_per_week`) VALUES
('AD356', '3D modeling Maya', 10, 3, 3),
('CS101', 'Introduction to object-oriented programming', 10, 3, 4),
('CS102', 'JAVA 2', 10, 3, 4),
('CS103', 'Algorithms', 8, 3, 3),
私が受験しようとした学生のすべての被験者数のすべてを見つけるために、クエリを参加させる必要がある(関係なく、彼らが合格したか失敗した).AND私は、結果として表示する必要があります 科目。 subjectID、subjects.name、件名ごとのクラスとプラクティスの総数、試験に合格した生徒の数(合否にかかわらず)。 は、これが私の試みです:
SELECT
subjects.subjectID,
subjects.name,
(subjects.number_of_classes_per_week+subjects.number_of_practices_per_week) AS 'Totall number of classes per week',
COUNT(grades.subjectID) AS 'Number of students that tried to pass'
FROM
subjects,
grades
WHERE
subjects.subjectID = grades.subjectID AND
grade >= 5;
しかし、私は最初その主題と私が持っているしたいと思います結果はこのようなものです すべての被験者のための学生の総数のためのクラスの彼の数をsubjectIDます:
subjectID name Totall number of classes per week Number of students that tried to pass
AD356 3D modeling Maya 6 10
CS101 Introduction to object-oriented programming 7 4
CS102 'JAVA 2' 7 5
CS103 Algorithms 6 4
サンプルデータと予想される出力を提供してください。ありがとう。 –
@MartinSchneider私はnow.Just a momentを編集します – Mapet
あなたは集計関数 'COUNT()'を持っていますが、一致する 'GROUP BY'はありません。 'GROUP BY 1,2,3 'を追加して、クエリを結果セットの最初の3つのカラムでグループ化します。まだ奇妙な結果が残っている場合はお知らせください。 –