2014-05-25 5 views
0

나는 Student, Apply, College의 3 개의 테이블을 가지고있다.SQL Distinct - Not working

그리고 각 학생의 전공과 전공을 반환하고 싶습니다. 얼마나 오래, 내가 이것을 할 때, 나는 "중복"을 얻는다. 그래서 내가 말하길 : 별개를 사용하자, 별개의 경우 오류가 발생하지만 "distinct"를 제거하면 쿼리가 올바르게 작동하지만 중복이 발생합니다.

distinct없이이 코드를 사용해 보았지만 같은 결과가 나옵니다. 도와주세요.

* MS SQL SERVER ENTERPRISE 2008입니다. 중복 된 학생이 생깁니다. 예를 들어 행 1과 3에서 동일한 결과를 얻습니다. 학생 : "Amy", 전공 : "CS".

select **distinct** SName as Student, major 
from Student, Apply 
where Student.sID = Apply.sID; 
+0

검색 조인. –

+0

어떤 종류의 중복 행을 얻습니까? – Fredou

+0

행 1과 3에서 나는 학생 : 에이미, 메이저 = CS :/ – user3352567

답변

0

당신이 작동하는 별개 대한 VARCHAR에 열의 데이터 형식을 변환해야합니다 : CONVERT(VARCHAR(MAX), column).

시도 : SQL에 대한

select distinct CONVERT(VARCHAR(MAX), SName), CONVERT(VARCHAR(MAX), major) 
from Student, Apply 
where Student.sID = Apply.sID; 
+0

읽었습니다. 그 텍스트는 더 이상 사용되지 않을 것입니다. 나는 다음을 사용하려고 계획하고있다 : nvarchar;) – user3352567

+0

그것은 아마도 역시 작동 할 것이다. 다른 데이터베이스가이 데이터베이스를 사용하지 않는다면 데이터베이스의 열 유형을 변경하고 처음에 사용한 SQL 문을 사용하는 것이 좋습니다. (성능 및 가독성을 이유로) – Spikolynn

+0

이것은 효과가 있습니다 !!! 고마워요! 나는 그것을 풀지는 않지만 Varchar (max)를 찾을 것입니다. 왜 텍스트로 작동하지 않는지 설명해 주시겠습니까? – user3352567