2011-12-16 3 views
0

일부 코드가 붙어 있습니다. 특정 교육 과정에 등록한 IT 학생을 표시해야합니다. 이것은 지금까지 제가 작성한 코드입니다. IT 학생 이름을 표시하지만, 등록한 코스를 표시 할 때는 사용 가능한 모든 코스가 표시됩니다.SQL 쿼리 도움말, 고유를 선택하십시오.

SELECT DISTINCT s.sid, s.sname, e.ccode 
FROM student s, enrolled e 
WHERE s.programme = 'IT'; 

나는 내가이 어떻게해야합니까, 그것은 e.ccode에 연결 나던는 WHERE s.programme = 'IT'라인을 함께 할 수있어 가정?

+0

이 두 테이블의 테이블 구조를 공유해야합니다. 우리는 당신만큼 익숙하지 않습니다. –

답변

2

이것은 크로스 조인이므로 결과를 필터링하려면 조인 조건이 필요합니다. 학생의 다른 현명한 행은 등록 된 테이블의 모든 행에 합류하게됩니다.

SELECT DISTINCT s.sid, s.sname, e.ccode 
FROM student s INNER JOIN enrolled e on s.sid = e.sid 
WHERE s.programme = 'IT'; 

등록 된 테이블에 학생 ID가 있다고 가정합니다. 당신이 무슨 말을하는지

SELECT DISTINCT a, b 

, "나에게와 결합 B의 고유 한 가치 제공"을 :

0
SELECT DISTINCT s.sid, s.sname, e.ccode 
    FROM student s INNER JOIN enrolled e on s.sid = e.sid 
    WHERE s.programme = 'IT';//use inner join 

실제로, DISTINCT는 당신이 말하는 기본적으로 할 때, 1 열 자체를 제한하지 않습니다. . 마치 다중 열 UNIQUE 색인