간단한 SQL 검색문 질문 드립니다. 0 1 2,060

by 규또 select sql [2020.05.11 17:29:41]


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)
);

 

by 마농 [2020.05.12 08:08:06]
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%') -- 간단하게
;

 

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입