テーブルone
のデータを使用して、テーブルtwo
を更新する必要があります。表1と表2は、共通の列によって関連付けられていません。テーブルthree
はテーブルtwo
に関連しています。
例:テーブル1(reg_detテーブル)
reg_det_id | reg_id | results
101 | 11 | 344
表2:(一時テーブル)
venue | results
Anheim convention center | 355
表3(regmaster-tbl)
reg_id| venue
11 | Anaheim convention center
表2のデータを使用して、表1の結果列を更新する必要があります。しかし、表1と表2は関連していません。上記の表2と3、および表1と3は関連しています。誰でもアイデアを提案してください!表1の結果の値は355である必要があり、このデータは表2からのものですが、これら2つは無関係であり、表3を使用して関連付けることができます。混乱する場合は申し訳ありません!
かなり簡単です:
UPDATE T1
SET result = t2.results
FROM [table one] T1
INNER JOIN [table three] t3
on t1.reg_id = t3.reg_id
INNER JOIN [table two] T2
on t2.venue = t3.venue
答えではなく、ほぼ質問。 :)
暗黙の内部結合を使用できませんでしたか?
UPDATE rd
SET rd.results = tt.results
FROM reg_det rd, regmaster rm, temptable tt
WHERE rm.reg_id = rd.reg_id
AND rm.venue = tt.venue;
読みやすく、この構文はSELECT
ステートメントで機能し、明示的な内部結合と同じ意味を持ちます。
これを試して:
UPDATE rd
SET rd.results = t.results
FROM reg_det rd
JOIN regmaster rm ON rm.reg_id = rd.reg_id
JOIN temptable t ON t.venue = rm.venue
WHERE t.results = 355
そうしないと、regmasterとtemptableに一致するすべてのreg_detレコードが更新されるため、WHERE句を追加しました。