2011. 8. 13. 14:25

1. 문제의 발견

테이블을 조인하는데...

select C.*
from tb_SchoolInfo A join tb_SchoolData B join tb_Data_2010_11 C
on A.strSchoolCode = B.strSchoolCode on A.strSchoolCode = C.strBuildingCode
where A.strState = '대전' or A.strState = '광주'

 

전혀 오류 없는 이 구문에 'MSSQL2008'이 답합니다.

메시지 4104, 수준 16, 상태 1, 줄 2
여러 부분으로 구성된 식별자 "A.strSchoolCode"은(는) 바인딩할 수 없습니다.

 

이런 말도 안되는....

MSSQL양반 그게 무슨 소리요? 내가 오류라니!!

 

 

1. 원인 및 해결방법

일단 저오류는 별칭이 선언 되지 않았을때 나는 에러입니다.

말 그대로 이름(별칭)이 없다는 소리입니다..

 

근데 코드를 보면 알겠지만 뒤에도 A를 사용하고 있습니다.

그런데 뒤에는 에러가 안나고 앞에는 납니다. -_-;;;

 

당연이 코드상으로는 제대로 선언을 했습니다.

이짓 저짓 해보았으나 해답을 못찾고 혹시나 해서 순서를 바꿔 보았습니다.

select C.*
from tb_Data_2010_11 C join tb_SchoolData B join tb_SchoolInfo A
on A.strSchoolCode = B.strSchoolCode on A.strSchoolCode = C.strBuildingCode
where A.strState = '대전' or A.strState = '광주'

 

됩니다...

아주 잘됩니다.....

 

 

 

마무리

아무래도 제가 조인의 특성을 잘 이해하지 못해서 그런거 같은데

변수선언 순서처럼 선언순서에 따른 에러인듯 합니다.

이거 자세히 아시는분 덧글좀 ㅜㅡ