2016-08-26 22 views
0

に参加私は3つのテーブルを持っている: 表内側複数が同じテーブル

UID 
SellID 
BuyID 
SAMonth 

表B

ID 
ZipCode 

表C

Zip Code 
Latitude 
Longitude 

今私は2つの間の距離を見つけなければなりませんIDの

まずUIDを持っていて、そのUIDに基づいて、次のコードを使って各IDに対応する2つの郵便番号を取得しようとしました。

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 

このコードで何が間違っていますか、私は2番目の内部結合を追加するときに構文エラーが発生しています。この郵便番号を使用して、両方のIDの緯度と経度を取得する方法

フォーマットの違いのためにLikeキーワードで動作しています。角括弧を追加した後に動作します。それは第三のテーブルに拡張することができますどのように

+1

GUIデザイナーでクエリを作成すると、_Like_が置き換えられ、2組のかっこが設定されます。 – Gustav

+0

[SQL Inner Join with multiple table]の可能な複製(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

等価比較=であなたは、例えば括弧の中に合流するの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=(等号)に置き換えることをお勧めします。

第3のテーブルを追加することは、追加のレベルの括弧を追加することを含む。

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 
関連する問題