Si vous obtenez une erreur vous indiquant que "L'identifiant en plusieurs parties n'a pas pu être lié.", cela signifie généralement que vous préfixez une ou plusieurs colonnes avec soit une table qui n'est pas incluse dans votre requête, soit un alias que vous n'avez pas réellement attribué à une table.
Heureusement, le message d'erreur vous indique quel identifiant en plusieurs parties est à l'origine du problème.
Exemple
Voici un exemple pour montrer comment obtenir l'erreur.
SELECT * FROM Cats
INNER JOIN Dogs d
ON c.CatName = d.DogName;
Résultat :
Msg 4104, Level 16, State 1, Line 3 The multi-part identifier "c.CatName" could not be bound.
Dans cet exemple, j'ai oublié d'inclure un alias pour les Cats tableau.
L'erreur se produira également si vous essayez de référencer le nom de la table après avoir déjà fourni un alias.
Comme ceci :
SELECT * FROM Cats c
INNER JOIN Dogs d
ON Cats.CatName = d.DogName;
Résultat :
Msg 4104, Level 16, State 1, Line 3 The multi-part identifier "Cats.CatName" could not be bound.
Donc dans ce cas, j'ai correctement attribué l'alias, mais dans le ON
clause J'ai référencé le nom réel de la table au lieu de l'alias.
La solution
La solution consiste donc à vous assurer que vous avez attribué tous les alias auxquels vous pourriez faire référence plus tard dans la requête, et également à vous assurer que vous utilisez directement ces alias au lieu du nom de la table.
Donc, si vous comptez utiliser des alias, comme ceci :
SELECT * FROM Cats c
INNER JOIN Dogs d
ON c.CatName = d.DogName;
Ou si vous choisissez de ne pas utiliser d'alias, comme ceci :
SELECT * FROM Cats
INNER JOIN Dogs
ON Cats.CatName = Dogs.DogName;