に結合することができなかった私は、2つのテーブルを有する:(ペアで)SQL更新テーブルセット - マルチパート識別子
- 表1ガソリンスタンドの =名前を
- 表2 =共を有します縦情報(とりわけ経度及び緯度)表1の
例:
StationID1 StationID2 Name1 Name2 Lattitude1 Longitude1 Lattitude2 Longitude2 Distance
------------------------------------------------------------------------------------------------
93353477 52452 FOO BAR NULL NULL NULL NULL NULL
93353527 52452 HENRY BENNY NULL NULL NULL NULL NULL
93353551 52452 GALE SAM NULL NULL NULL NULL NULL
表2の例:
IDInfo Name Lattitude Longitude
-------------------------------------------
93353477 BAR 37.929654 -87.029622
IはtableA
に存在する座標情報と、このテーブルを更新します。私は、次のエラーメッセージが表示されますSQL Server 2005: The multi-part identifier … could not be bound
update table1
set t1.[Lattitude1] = t2.[Lattitude]
from table1 t1
left join table2 t2
on (t1.StationID1 = t2.IDInfo)
ごとに以下のことを実行しようとしました:
メッセージ4104、レベル16、状態1、行を1
マルチパート識別子「T1 .Lattitude1 "は束縛できませんでした。
しかし、私が次のことをすると、別のテーブルに保存することができます。
SELECT t1.[StationID1]
,t1.[StationID2]
,t1.[Name1]
,t1.[Name2]
,t2.[Lattitude] AS [Lattitude1]
,t2.[Longitude] AS [Longitude1]
,t3.[Lattitude] AS [Lattitude2]
,t3.[Longitude] AS [Longitude2]
from table1 t1
left join table2 t2
on (t1.StationID1 = t2.IDInfo)
left join table2 t3
on (t1.StationID2 = t2.IDInfo)
私はSQLに非常に新しいですし、いくつかのものが動作し、他の人がいない理由を理解することは難しい時間を過ごしています。上に掲載したリンクを元に、最初のクエリがうまくいかなければならない - いいえ?おそらく、私はこれを試して何時間も過ごしていたので、私はまっすぐ考えていなかったし、結局同僚の助けを得た(彼女は上記のアプローチを提案した)。
エイリアスを使用するか、まったくFROM句でTABLE1を繰り返すことがない方が良い:table2.IDInfo = table1.StationID1表2から更新TABLE1セットLattitude1 = table2.Lattitude。 SQL Serverの "UPDATE ... FROM"構築は非標準的であり、特にエイリアスが使用されている場合は、少し不思議です。 FROM句のテーブル名またはエイリアス名がUPDATEの後に来るものと一致すると、これらのテーブルは魔法のように識別されますが、リモートクエリが含まれているとこれが破損する可能性があります(UPDATE .. FROMおよびhttp://bit.ly/14EXoZP)。 –
@cgatian、bobs - ご協力いただきありがとうございます。両方のソリューションが機能しました。私はSteve Kassが念のために言及した問題を指摘した。皆さん、ありがとうございました。 – codingknob