반응형
테이블의 모든 요소에 대해 조인 쿼리가 제대로 작동하지 않습니다.
제 문제는요, 저는 두 개의 테이블 과목과 성적이 있어요.
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),
모든 과목에 대해 시험을 보려는 학생 수를 모두 찾기 위해 참여 쿼리를 만들어야 합니다(합격 여부에 관계없이).그 결과, 실험 대상들을 보여줘야 합니다.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 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
MySQL에 카운트할 항목, 즉 카운트오버할 그룹 식별자로 사용할 필드를 지정해야 합니다.
당신의 경우, 그게 바로 그 주제일 겁니다.ID: 각 과목의 모든 성적(5등급 이상)을 세려고 합니다.
따라서 WHERE 문 뒤에 다음과 같이 추가해야 합니다.
GROUP BY subjectID
그럼 넌 끝장이야
용용을 사용하고 .count()
그룹화 기준 없이 함수를 집약하므로 mysql은 행을 하나만 반환합니다.이것을 시험해 보세요(도움이 될 수 있습니다).
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(distinct grades.studentBook) AS 'Number of students that tried to pass'
FROM
subjects
JOIN grades ON grades.subjectID = subjects.subjectID
GROUP BY subjects.subjectID
언급URL : https://stackoverflow.com/questions/47795911/join-query-not-working-properly-for-all-the-elements-in-the-table
반응형
'programing' 카테고리의 다른 글
MySQL ORDER BY IN() (0) | 2022.10.02 |
---|---|
datetime 기본값(mariadb) (0) | 2022.10.02 |
MySQLWorkbench에서 바로 가기로 문 실행 (0) | 2022.10.02 |
특정 다른 열 값에 대해서만 한 열에 대한 색인 (0) | 2022.10.02 |
JavaScript에서 "double tilde"(~~) 연산자는 무엇입니까? (0) | 2022.10.02 |