Ако получите грешка, която ви казва, че „Идентификаторът от няколко части не може да бъде обвързан.“, това обикновено означава, че поставяте префикс на една или повече колони с таблица, която не е включена във вашата заявка, или псевдоним които всъщност не сте присвоили към маса.
За щастие съобщението за грешка ви показва кой идентификатор от няколко части причинява проблема.
Пример
Ето пример, за да демонстрирате как да получите грешката.
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;