0

編集:

GUID によってリンクされている 2 つのテーブル、表 1 と表 2 があり、表 1 にない GUID を表 2 で検索して挿入したい

以下に示すように、select from where ステートメントへの挿入を使用しようとしています。

insert into WebCatalog.Published.DemoTracking (RCompanyLink, Purchased, DemoDate)
Select RC.Link, Purchased = 0, DemoDate = GETDATE()
from WebCatalog.Published.RCompany RC
where RC.Link != WebCatalog.Published.DemoTracking.RCompanyLink and RC.DemoLicense = 1

ストアド プロシージャ内にあり、マルチパート識別子を参照してバインドできない場合、無効なオブジェクト名エラーが発生し続けます。

WebCatalog.Published.DemoTracking.RCompanyLink

単体で実行しようとするとエラー。

ステートメントのフォーマットが間違っていますか?

4

2 に答える 2

1

それ以外の

 RC.Link != WebCatalog.Published.DemoTracking.RCompanyLink 

使用する

 RC.Link not in ( Select RCompanyLink from WebCatalog.Published.DemoTracking )

完全なコード

INSERT INTO webcatalog.published.demotracking 
            (rcompanylink, 
             purchased, 
             demodate) 
SELECT RC.link, 
       Purchased = 0, 
       DemoDate = Getdate() 
FROM   webcatalog.published.rcompany RC 
WHERE  RC.link NOT IN (SELECT rcompanylink 
                       FROM   webcatalog.published.demotracking) 
       AND RC.demolicense = 1 
于 2013-10-22T16:18:22.980 に答える
0

問題は、SQL では、データがどのように関連しているかをサーバーに伝える必要があることです。自動的に推論するわけではありません。あなたが持っているものは、orm と Linq2Sql (.Net テクノロジ) を使用して動作する可能性があります。

IN よりもパフォーマンスが高いと思われる NOT EXISTS を使用することをお勧めします。

INSERT INTO webcatalog.published.demotracking 
            (rcompanylink, 
             purchased, 
             demodate) 
SELECT RC.link, 
       Purchased = 0, 
       DemoDate = Getdate() 
FROM   webcatalog.published.rcompany RC 
WHERE  NOT EXISTS (SELECT *
         FROM   webcatalog.published.demotracking dt WHERE dt.rcompanylink = RC.link) 
       AND RC.demolicense = 1 
于 2013-10-22T16:24:18.537 に答える