STUDENT(Sid, Sname) : 학생의 학번과 이름
COURSE(Cid, Cname) : 교과목의 번호와 이름
ENROL(Sid, Cid) : 수강하는 학생들의 학번과 교과목 번호
이러한 테이블이 있고 구하려는 것은
COURSE 테이블의 교과목들 중 Cid가 C로 시작하는 교과목들을 모두 수강하는 학생들의 학번과 이름을 검색하는 것입니다..
아래와 같이 sql문 작성하였는데 어디가 틀렸는지 알려주세요 ㅠㅠ
SELECT S.Sid,S.Sname FROM STUDENT AS S, COURSE AS C, ENROL AS E WHERE C.Cid=E.Cid AND (E.Sid=S.Sid) AND ( (SELECT GROUP_CONCAT(C.Cid ORDER BY C.Cid ASC) FROM COURSE WHERE C.Cid LIKE 'C%') = (SELECT GROUP_CONCAT(E.Cid ORDER BY E.Cid ASC) FROM ENROL GROUP BY S.Sid) );
SELECT s.sid , s.sname FROM student s INNER JOIN enrol e ON s.sid = e.sid WHERE e.cid LIKE 'C%' GROUP BY s.sid, s.sname HAVING GROUP_CONCAT(e.cid ORDER BY e.cid) = (SELECT GROUP_CONCAT(cid ORDER BY cid) FROM course WHERE cid LIKE 'C%') -- HAVING COUNT(*) = (SELECT COUNT(*) FROM course WHERE cid LIKE 'C%') -- 간단하게 ;