나는 지난 며칠 동안 다음을 수행하는 MySQL 쿼리를 작성하기 위해 노력해 왔습니다.
가르 칠 자격을 갖춘 교수가 한 명 이상있는 각 클래스에 대해 해당 클래스를 가르 칠 자격이있는 교수의 수를 나열합니다.
다음 쿼리를 시도했지만 올바른 출력을 제공하지 않았습니다.
select Class, Semester, p.EmpId from Qualified q, Teaches T, Professor p where q.EmpId = p.EmpId and T.EmpId = p.EmpId group by p.EmpId;
+-------+---------+-------+---------+-----------+------+-----------------------------------+
| EmpId | ClassId | EmpId | FName | LName | Dept | QualClass |
+-------+---------+-------+---------+-----------+------+-----------------------------------+
| 101 | BA101 | 101 | Bobby | Ewing | BA | BA101, BA102 |
| 102 | BA101 | 102 | Red | Skeleton | BA | BA101, BA102 |
| 101 | BA102 | 101 | Bobby | Ewing | BA | BA101, BA102 |
| 102 | BA102 | 102 | Red | Skeleton | BA | BA101, BA102 |
+-------+---------+-------+---------+-----------+------+-----------------------------------+
다음은 관련 테이블입니다.
CREATE TABLE Professor
(
EmpId INTEGER,
FName VARCHAR(10),
LName VARCHAR(10),
Dept VARCHAR(2),
QualClass VARCHAR(40),
PRIMARY KEY (EmpId)
);
CREATE TABLE Teaches
(
Class VARCHAR(5),
Section INTEGER,
Semester CHAR(4),
EmpId INTEGER,
FOREIGN KEY (EmpId) REFERENCES Professor(EmpId)
);
CREATE TABLE Qualified
(
EmpId INTEGER,
ClassId VARCHAR(5)
);
다음은 몇 가지 DML 문입니다.
INSERT INTO Professor (EmpId, FName, LName, Dept, QualClass) VALUES (101, 'Bobby', 'Ewing', 'BA', 'BA101, BA102');
INSERT INTO Professor (EmpId, FName, LName, Dept, QualClass) VALUES (102, 'Red', 'Skeleton', 'BA', 'BA101, BA102');
INSERT INTO Teaches (Class, Section, Semester, EmpId) VALUES ('BA101', 1, 'FA12', 101);
INSERT INTO Teaches (Class, Section, Semester, EmpId) VALUES ('BA101', 1, 'SP13', 102);
INSERT INTO Teaches (Class, Section, Semester, EmpId) VALUES ('BA101', 1, 'SU13', 101);
INSERT INTO Teaches (Class, Section, Semester, EmpId) VALUES ('BA102', 1, 'FA12', 102);
INSERT INTO Teaches (Class, Section, Semester, EmpId) VALUES ('BA102', 1, 'SP13', 101);
INSERT INTO Teaches (Class, Section, Semester, EmpId) VALUES ('BA102', 1, 'SU13', 102);
INSERT INTO Qualified (ClassId, EmpId) VALUES ('BA101', 101);
INSERT INTO Qualified (ClassId, EmpId) VALUES ('BA101', 102);
INSERT INTO Qualified (ClassId, EmpId) VALUES ('BA102', 101);
INSERT INTO Qualified (ClassId, EmpId) VALUES ('BA102', 102);
귀하의 진술에 따르면 :
가르 칠 자격을 갖춘 교수가 한 명 이상있는 각 클래스에 대해 해당 클래스를 가르 칠 자격이있는 교수의 수를 나열합니다.
다음 쿼리 는 수업을 가르 칠 자격이있는 교수 의 수를 나열합니다 . 그리고 작동을 보여주는 SQLFiddle 이 있습니다.
SELECT Q.ClassId, count(Q.EmpId) as "Professor Count"
FROM Qualified Q
GROUP BY ClassId
이제 어떤 교수가 자격을 갖추 었는지 알아야 한다면 다른 질문 이 될 것 입니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다