Se viene visualizzato un messaggio di errore che ti informa che "Impossibile associare l'identificatore in più parti", in genere significa che stai anteponendo a una o più colonne una tabella che non è inclusa nella query o un alias che non hai effettivamente assegnato a una tabella.
Fortunatamente, il messaggio di errore mostra quale identificatore multiparte sta causando il problema.
Esempio
Ecco un esempio per dimostrare come ottenere l'errore.
SELECT * FROM Cats
INNER JOIN Dogs d
ON c.CatName = d.DogName;
Risultato:
Msg 4104, Level 16, State 1, Line 3 The multi-part identifier "c.CatName" could not be bound.
In questo esempio, dimentico di includere un alias per i Cats tabella.
L'errore si verificherà anche se tenti di fare riferimento al nome della tabella dopo aver già fornito un alias.
In questo modo:
SELECT * FROM Cats c
INNER JOIN Dogs d
ON Cats.CatName = d.DogName;
Risultato:
Msg 4104, Level 16, State 1, Line 3 The multi-part identifier "Cats.CatName" could not be bound.
Quindi in questo caso ho assegnato correttamente l'alias, ma in ON
clausola I ha fatto riferimento al nome effettivo della tabella anziché all'alias.
La soluzione
Quindi la soluzione è assicurarti di aver assegnato tutti gli alias a cui potresti fare riferimento più avanti nella query e anche assicurarti di utilizzare tali alias invece del nome della tabella direttamente.
Quindi, se hai intenzione di utilizzare alias, in questo modo:
SELECT * FROM Cats c
INNER JOIN Dogs d
ON c.CatName = d.DogName;
Oppure, se scegli di non utilizzare gli alias, in questo modo:
SELECT * FROM Cats
INNER JOIN Dogs
ON Cats.CatName = Dogs.DogName;