2016-08-26 1 views
0

에 가입 나는 세 개의 테이블이 있습니다 표 A내부 다중이 같은 테이블

UID 
SellID 
BuyID 
SAMonth 

표 B

ID 
ZipCode 

표 C

Zip Code 
Latitude 
Longitude 

지금은 두 사이의 거리를 찾을 수있다 ID의

첫째로 나는 UID를 가지고 있었고 그 UID를 기반으로 다음 코드를 사용하여 각 ID에 해당하는 두 개의 우편 번호를 얻으려고했다.

Select t1.UID,t1.SellID,z1.ZipCode, t1.BuyID, z2.ZipCode , SAMonth 
from tableA t1 
inner join tableB z1 on t1.SellID Like z1.ID 
inner join tableB z2 on t1.BuyID Like z2.ID 
where Criteria 

이 코드에서 잘못된 점은 두 번째 내부 조인을 추가 할 때 구문 오류가 발생합니다. 이 우편 번호를 사용하여 두 ID의 위도와 경도를 얻는 방법

형식 차이로 인해 Like 키워드와 함께 작동합니다. 괄호를 추가 한 후 작업. 이 3 표를 확장 할 수있는 방법

+1

GUI 디자이너에서 쿼리를 작성하면 _Like_를 대체하고 두 세트의 괄호를 설정한다는 것을 알 수 있습니다. – Gustav

+0

[SQL Inner Join with multiple tables]의 가능한 복제본 (http://stackoverflow.com/questions/19367565/sql-inner-join-wih-multiple-table) – Andre

답변

0

like

inner join tableB z1 on t1.SellID = z1.ID 
inner join tableB z2 on t1.BuyID = z2.ID 
0
Select t1.UID,t1.SellID,z1.ZipCode, t1.BuyID, z2.ZipCode , t1.SAMonth 
from tableA t1 
inner join tableB z1 on t1.SellID = z1.ID 
inner join tableB z2 on t1.BuyID = z2.ID 
1

평등 비교 =으로 당신은이 예를 들어, 괄호에 조인 중 하나를 넣을 필요가 교체

Select t1.UID,t1.SellID,z1.ZipCode, t1.BuyID, z2.ZipCode , SAMonth 
    from (tableA t1 
     inner join tableB z1 on t1.SellID Like z1.ID) 
     inner join tableB z2 on t1.BuyID Like z2.ID 
where Criteria 

이 단순히 목적을 구문 분석, 최적화 그것이 최고를 결정하는 중 위하여 사용되어 작성을 강제로 순서.

데이터 요소 이름 (ID)은 like= (같음)으로 바꿔야 함을 다른 사람들은 지적했습니다.

세 번째 테이블을 추가하는 것은 추가 레벨의 괄호 중첩을 추가하는 것과 관련됩니다.

from ((tableA t1 
     inner join tableB z1 on t1.SellID Like z1.ID) 
     inner join tableB z2 on t1.BuyID Like z2.ID) 
     inner join tableC z3 on z1.ZipCode = z3.ZipCode