2017-02-09 3 views
-3

だから明らかに、これはあいまいな列名を持つ「LocationID」:私は一番下の行を変更することによって修正することができますあいまいな列名...時々だけですか?

DECLARE @temptable table (LocationID int) 
INSERT INTO @temptable SELECT LocationID FROM inserted; 

INSERT INTO dbo.LocationsPlants (LocationID, PlantID) 
(SELECT LocationID, PlantID FROM dbo.Plants CROSS JOIN @temptable) 

(SELECT T.LocationID, PlantID FROM dbo.Plants CROSS JOIN @temptable AS T) 

しかし、別のテーブルの上に、この同じクエリがをしませんあいまいな列があるIncotermsID:

DECLARE @temptable table (IncotermsID int) 
INSERT INTO @temptable SELECT IncotermsID FROM inserted; 

INSERT INTO dbo.IncotermsPlants (IncotermsID, PlantID) 
(SELECT IncotermsID,PlantID FROM dbo.Plants CROSS JOIN @temptable) 

私は困惑しています。テーブル構造:

dbo.Locations:

[LocationID] [int] NOT NULL, 
    [LocationTypeID] [int] NOT NULL, 
    [Title] [varchar](100) NULL 

dbo.Incoterms:

[IncotermsID] [int] IDENTITY(1,1) NOT NULL, 
    [Incoterm] [varchar](20) NOT NULL 
+4

特に、クエリに複数のテーブルがある場合は、テーブルのエイリアスと修飾されたカラム名を使用してください。その後、このエラーについて心配する必要はありません。 –

+1

植物の定義は? –

+0

ビンゴ、私は植物でLocationIDを持っていたのを忘れてしまった。必要。もっと。コーヒー。 – Eliska

答えて

1

問題が最も可能性の高いクエリが混乱している理由ですPlantsテーブルでLocationIDという列であり、戻されるのはLocationIDの列で、Plantsまたは@temptable

@ GordonLinoffが述べたように、ジョインや相関クエリで使用されるテーブルを常にエイリアスし、関連するカラムに対しても同様に実行することをお勧めします。

理由は、この唯一の「時々を」たまたま自分の2番目のクエリでは、単一IncotermsIDがあなたのCROSS APPLYで使用される2つの唯一のテーブルに存在があるためです。

関連する問題