sql >> Base de Datos >  >> RDS >> Sqlserver

Error de SQL Server 4104:no se pudo vincular el identificador de varias partes.

Si recibe un error que le indica que "No se pudo vincular el identificador de varias partes", generalmente significa que está prefijando una o más columnas con una tabla que no está incluida en su consulta o un alias. que en realidad no has asignado a una mesa.

Afortunadamente, el mensaje de error le muestra qué identificador de varias partes está causando el problema.

Ejemplo

Aquí hay un ejemplo para demostrar cómo obtener el error.

SELECT * FROM Cats
INNER JOIN Dogs d
ON c.CatName = d.DogName;

Resultado:

Msg 4104, Level 16, State 1, Line 3
The multi-part identifier "c.CatName" could not be bound.

En este ejemplo, olvidé incluir un alias para los Cats mesa.

El error también ocurrirá si intenta hacer referencia al nombre de la tabla después de haber proporcionado un alias.

Así:

SELECT * FROM Cats c
INNER JOIN Dogs d
ON Cats.CatName = d.DogName;

Resultado:

Msg 4104, Level 16, State 1, Line 3
The multi-part identifier "Cats.CatName" could not be bound.

Entonces, en este caso, asigné correctamente el alias, pero en ON cláusula Hice referencia al nombre de la tabla real en lugar del alias.

La Solución

Entonces, la solución es asegurarse de haber asignado todos los alias a los que podría hacer referencia más adelante en la consulta, y también asegurarse de usar esos alias en lugar del nombre de la tabla directamente.

Entonces, si vas a usar alias, así:

SELECT * FROM Cats c
INNER JOIN Dogs d
ON c.CatName = d.DogName;

O si elige no usar alias, así:

SELECT * FROM Cats
INNER JOIN Dogs
ON Cats.CatName = Dogs.DogName;