어떤 SQL문을 써야할지 잘 모르겠습니다. 0 4 1,196

by whitemind [2011.04.25 12:31:43]


다음과 같은 스키마가 있습니다.  

- Course ( cno, cname, credit, sessions )

- Lecture ( cno(FK), pno(FK), lec_time, room )

- Professor ( pno, pname, pmajor, pdept )

- Enroll ( sno(FK), cno(FK), grade, exam )

- Student ( sno, pno(FK), sname, year, dept )

문제는 Retrive names of all courses / taught by Professor 'Kim'  이거입니다.

김교수가 가르치는 모든 과목의 이름을 검색하라. 인데

select cname
from course, professor
where pname = 'kim';

 이렇게만 하면 될줄 알았는데 너무 많은 과목이름이 출력되어 나오더라구요.

이제 막 공부를 하고 있는 단계라 쿼리문을 어떻게 작성해줘야하는지 ㅜㅜ

by 知音 [2011.04.25 12:39:16]
select c.cname
from course c
, lecture l
, professor p
where c.cno = l.cno
and l.pno = p.pno
and p.pname = 'kim';

by 知音 [2011.04.25 12:40:12]
select c.cname
from course c
, lecture l
where c.cno = l.cno
and l.pno = 'Kim교수번호'

by camela [2011.04.25 13:32:49]
조인조건이 없어서 크로스조인이 되어서 그렇습니다.
知音님 쿼리처럼 조인조건을 주면 됩니다.

by whitemind [2011.04.25 21:47:12]
많은 답변들 감사합니다.

natural join을 이용해서 해결하니까 되네요 ^^

where 절에는 알려주신대로 했더니 잘 검색되어 나옵니다. 감사해요 ^^
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입