1

1対多の関係を作成できるように、あるテーブルから別のテーブルにキーを追加しようとしています。外部キーを追加したいテーブルには、現在、従業員の名前と名前がありますが、IDはありません。従業員テーブルにクエリを実行して、名前と名前に基づいてIDを見つけ、それを傷害テーブルに追加したいと思います。

次のエラーが発生し続けます。

The multi-part identifier "InjuryOLD.FirstName" could not be bound.
The multi-part identifier "dbo.InjuryOLD.LastName" could not be bound.

以下はSQLステートメントです。

Insert into dbo.InjuryOLD(dbo.InjuryOLD.EmpID)
Select dbo.EmployeeInformation.EmpID
From EmployeeInformation
Where exists(select dbo.EmployeeInformation.EmpID from dbo.EmployeeInformation
             where dbo.EmployeeInformation.FirstName = dbo.InjuryOLD.FirstName 
             and dbo.EmployeeInformation.LastName = dbo.InjuryOLD.LastName)

参照しているテーブルと列にタイプミスがないことを確認しました。また、2人の従業員が同じ名前を持つ可能性があることを知っています。ただし、このシナリオではそうではありません。

4

1 に答える 1

3

ステートメントが常にそれ自体で機能する必要があるSELECT部分INSERT

それで...

Select dbo.EmployeeInformation.EmpID
From EmployeeInformation
Where exists(select dbo.EmployeeInformation.EmpID from dbo.EmployeeInformation
             where dbo.EmployeeInformation.FirstName = dbo.InjuryOLD.FirstName 
             and dbo.EmployeeInformation.LastName = dbo.InjuryOLD.LastName)

...dbo.InjuryOLDどちらのFROM句でも参照されていないため、機能しません。dbo.InjuryOLDおそらく、繰り返すのではなく、Existsサブクエリのfrom句に入れるつもりでしたEmployeeInformation

Select dbo.EmployeeInformation.EmpID
From EmployeeInformation
Where exists(select 1 from dbo.InjuryOLD  
             where
                 dbo.EmployeeInformation.FirstName = dbo.InjuryOLD.FirstName 
                 and dbo.EmployeeInformation.LastName = dbo.InjuryOLD.LastName)
于 2012-05-25T17:19:02.653 に答える