2013-10-13 1 views
1

중복 된 열을 제거 할 수 있도록 "사용"과 유사한 PK에서 관계형 테이블을 조인하는 방법을 찾고 있습니다.중복 열을 피하기 위해 JOIN을 사용하는 것과 동일한 SQL 서버

select * 
from MovieHasDirector 
join Director on MovieHasDirector.directorID = Director.directorID 
where Director.name 
like '%Steven Spiel%' 

반환 : 내가 정말 원하는 것은

3818 976 976 Steven Spielberg 
3962 976 976 Steven Spielberg 
4317 976 976 Steven Spielberg 
4715 976 976 Steven Spielberg 

입니다 :

3818 976 Steven Spielberg 
3962 976 Steven Spielberg 
4317 976 Steven Spielberg 
4715 976 Steven Spielberg 

당신은 중복 directorID 열이 사라 볼 수 있습니다 여기에

은 예입니다. MySQL에서는 ON 대신에 (directorID)를 사용하여이 작업을 수행 할 수 있습니다. directorID = directorID

물론 MovieHasDirector.movieID, Director 선택을 지정하지 않고이 작업을 수행하려고합니다. * 반환 된 레코드가 필요합니다. 같은 열을 겹치게하십시오. 어떻게해야합니까?

+1

그래서 MySQL에서는 프로덕션 코드에서'select *'를 사용하는 것이 더 쉽습니다. 반면에 SQL Server는 더 좋은 방법입니다 [http://stackoverflow.com/a/3180435/11683]. – GSerg

+0

나는 [동일한 문제가있다] (http://stackoverflow.com/questions/32481055/alternatives-to-using-in-a-join-for-sql-server-for-avoiding-duplicated-columns-i). [이 해결책] (http://stackoverflow.com/a/32482404/2436175)을 살펴볼 수 있습니다. – Antonio

답변

3

당신은 SQL 서버에 할 수 없어, 당신은 당신이 반환 할 열 이름을 지정해야합니다 :

당신은 좀 더 쉽게하기 위해 테이블 ​​별칭을 사용할 수 있습니다
select MovieHasDirector.column1, MovieHasDirector.column2, Director.column1 
from MovieHasDirector 
join Director on MovieHasDirector.directorID = Director.directorID 
where Director.name 
like '%Steven Spiel%' 

:

select M.column1, M.column2, D.column1 
from MovieHasDirector M 
join Director D on M.directorID = D.directorID 
where D.name 
like '%Steven Spiel%' 
1

필자가 원하는 열을 수동으로 선택하는 것이 가장 좋은 방법이라고 생각합니다.

select a.ID, a.directorID, b.name from MovieHasDirector a, Director b 
where a.directorID = b.directorID 
관련 문제