「マルチパート識別子をバインドできませんでした」というエラーが表示された場合は、通常、クエリに含まれていないテーブルまたはエイリアスのいずれかを1つ以上の列の前に付けていることを意味します。実際にテーブルに割り当てていないこと。
幸い、エラーメッセージには、問題の原因となっているマルチパート識別子が表示されます。
エラーを取得する方法を示す例を次に示します。
SELECT * FROM Cats
INNER JOIN Dogs d
ON c.CatName = d.DogName;
結果:
Msg 4104, Level 16, State 1, Line 3 The multi-part identifier "c.CatName" could not be bound.
この例では、猫のエイリアスを含めるのを忘れています。 テーブル。
エイリアスを指定した後でテーブル名を参照しようとすると、エラーも発生します。
このように:
SELECT * FROM Cats c
INNER JOIN Dogs d
ON Cats.CatName = d.DogName;
結果:
Msg 4104, Level 16, State 1, Line 3 The multi-part identifier "Cats.CatName" could not be bound.
したがって、この場合、エイリアスを正しく割り当てましたが、ON
句エイリアスではなく実際のテーブル名を参照しました。
したがって、解決策は、クエリの後半で参照する可能性のあるすべてのエイリアスを割り当てたことを確認し、テーブル名の代わりにそれらのエイリアスを直接使用することを確認することです。
したがって、次のようなエイリアスを使用する場合:
SELECT * FROM Cats c
INNER JOIN Dogs d
ON c.CatName = d.DogName;
または、次のようにエイリアスを使用しないことを選択した場合:
SELECT * FROM Cats
INNER JOIN Dogs
ON Cats.CatName = Dogs.DogName;