0

タイトルが紛らわしいので説明させてください。作業する必要があると思われる 3 つのテーブルがあります。

  • 最初のテーブルが呼び出されVendorCertificationsCertID, Cert, VendorID列があります。
  • 2 番目のテーブルはVendorsでありVendorIDVendor列があります
  • 3 番目のテーブルはおよび列VendorCertを持っていますCertCompany

私が行ったのは挿入VendorCertVendorCertificationあり、今では証明書のリストがあり、PKCertIDは ID 仕様を使用して入力されています。

私がやりたいことは、戻ってfromでVendorCertificationテーブルを更新することです。VendorIDVendors

Vendors Vendorコラムとコラムを繋げられると思っていましたVendorCerts Company

次に、CTE を使用してVendorCertification VendorID列を更新します。

これは私が書いたものです:

with temptable as (
   select 
       vce.Company, v.Vendor, vce.Certification, V.VendorID
   from 
      VendorCert as VCE
   join 
      Vendors as V on V.Vendor = VCE.Company)
update VendorCertifications
set VendorID = temptable.VendorID
where temptable.Certification = Certification

これは機能しませんでした。「バインドできませんでした」というエラーが表示されます。なぜそうなるのかを理解しようとしましたが、うまくいきません。このようにする必要があるかどうかさえわかりません.3つのテーブルが含まれているため(少なくとも私はそれが含まれていると考えています)、通常の更新ステートメントを使用してそれを行う方法を考えることはできません。どんな助けでも大歓迎です。認定のリストは約 300 で、ベンダーのリストは約 40 です。

4

2 に答える 2

0

すでに最初の挿入を行っていますが、まだ行っていない場合は、OUTPUT 句を使用して、挿入したばかりの ID を返している可能性があります。これを追加するだけで、将来この種のタスクを実行するためのアイデアが得られます.

于 2013-07-31T19:08:04.257 に答える
0

これを試してください:

with temptable (Company,Vendor,Certification,VendorID)
as(
select vce.Company,v.Vendor,vce.Certification,V.VendorID
from VendorCert as VCE
join Vendors as V
on V.Vendor=VCE.Company)

update VC 
set VC.VendorID=TT.VendorID
from VendorCertifications VC join temptable TT on VC.Certification=TT.Certification
于 2013-07-31T17:26:41.537 に答える