2014-07-15 2 views
0

Microsoft SQL Server 2012 Management Studio를 사용하여 Transact-SQL의 '모호한 열 이름'문제에 문제가 있습니다.Transact-SQL 모호한 열 이름

나는 Stackoverflow에 이미 게시 된 답변 중 일부를 살펴 보았지만 나를 위해 일하지 않는 것 같았고 일부는 이해할 수 없거나 전반적인 견해를 잃어 버렸습니다.

다음 스크립트를 실행 :

USE CDD 

SELECT Artist, Album_title, track_title, track_number, Release_Year, EAN_code 
FROM Artists AS a INNER JOIN CD_Albumtitles AS c 
    ON  a.artist_id = c.artist_id 
INNER JOIN Track_lists AS t 
    ON  c.title_id = t.title_id 
WHERE track_title = 'bohemian rhapsody' 

다음과 같은 오류 메시지가 트리거 :

메시지 209, 수준 16, 상태 1, 줄 3 모호한 열 이름 'EAN_code'.

아티스트 이름, 앨범 제목 및 트랙 목록이있는 CD 데이터베이스는 아닙니다. 'CD_Albumtitles'및 'Track_list'테이블에는 모두 동일한 EAN 코드가있는 열이 있습니다. EAN 코드는 CD 앨범을 고유하게 식별하는 데 사용되는 중요한 국제 코드이므로 계속 사용하고 싶습니다.

+0

두 테이블 모두에 'EAN_code'가 존재합니다. 열을 선택할 테이블을 지정하십시오. 즉,'a.EAN_code' –

답변

0

선택 목록 및 where 절의 모든 열 앞에 별칭을 넣어야합니다. 현재 열의 하나가 조인의 여러 테이블에서 왔기 때문에 오류가 발생합니다. 별칭을 지정하면 기본적으로 표 중 하나를 선택합니다.

SELECT a.Artist,c.Album_title,t.track_title,t.track_number,c.Release_Year,t.EAN_code 
FROM Artists AS a INNER JOIN CD_Albumtitles AS c 
ON a.artist_id = c.artist_id 
INNER JOIN Track_lists AS t 
ON c.title_id = t.title_id 
WHERE t.track_title = 'bohemian rhapsody' 
+0

그 트릭을 했어! 매우 감사합니다 ! – user3763153

+0

@ user3763153 - 오신 것을 환영합니다. 질문에 답변이 있으면 답변을 수락하십시오. –

1

그래서 그런데 소스 테이블 중 하나를 별칭으로 필드 접두어 (또는 테이블 이름)

SELECT Artist,Album_title,track_title,track_number,Release_Year, 
     c.EAN_code -- or t.EAN_code, which should retrieve the same value 

을 선택, 그룹, 선택에 (모든 필드를 앞에 결합하려고 by 등), 유지 관리가 더 쉽습니다.