2009-05-15 49 views
2

サブクラスと内部結合を同じクエリで実行しようとしていますが、ほとんど成功しません。SQLクエリのアシスタンス - マルチパート識別子をバインドできませんでした。

クエリは、そのままで以下で、かつエラー

マルチパート識別子 「Company.LocalityId」を返すことが バインドできませんでした。

UPDATE Company 
SET 
    Company.BusinessRegionId = b.Id 
FROM 
(
    SELECT 
     Id 
     FROM 
     BusinessRegion 
     WHERE 
     tag = 'Australia/New South Wales' 
) b 
INNER JOIN Locality l ON 
    Company.LocalityId = l.Id 
where 
    l.StateOrProvinceAbbreviation = 'NSW' 

どのような援助は感謝して受信されるだろう。

答えて

4

あなたのBusinessRegionテーブルとLocalityテーブルは、実際にそのクエリで結合されていません。代わりにこのようなことをすることができますか?

UPDATE Company 
SET BusinessRegionId = (
    SELECT TOP 1 Id 
    FROM BusinessRegion 
    WHERE Tag = 'Australia/New South Wales') 
FROM Locality l 
WHERE l.Id = LocalityId AND l.StateOrProvinceAbbreviation = 'NSW' 
+0

おかげで、理にかなって、私は少しも冗長になった:) – johnc

3

はここで、クエリのバリエーションです:

UPDATE 
    c 
SET 
    c.BusinessRegionId = 
    (
     SELECT TOP 1 
     Id 
     FROM 
     BusinessRegion 
     WHERE 
     tag = 'Australia/New South Wales' 
    ) 
FROM 
    Company c 
    INNER JOIN Locality l ON c.LocalityId = l.Id 
WHERE 
    l.StateOrProvinceAbbreviation = 'NSW' 
+0

私は実際にこの1自分自身(何が起こっていたか見るために簡単に行ってきましたジョイントで)、それはマットの提案だった。 – johnc

関連する問題