Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Erro 4104 do SQL Server:O identificador de várias partes não pôde ser vinculado.


Se você receber um erro informando que "O identificador de várias partes não pôde ser vinculado.", geralmente significa que você está prefixando uma ou mais colunas com uma tabela que não está incluída em sua consulta ou um alias que você não atribuiu a uma tabela.

Felizmente, a mensagem de erro mostra qual identificador de várias partes está causando o problema.

Exemplo


Aqui está um exemplo para demonstrar como obter o erro.
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.

Neste exemplo, esqueci de incluir um alias para os Gatos tabela.

O erro também ocorrerá se você tentar fazer referência ao nome da tabela depois de já ter fornecido um alias.

Assim:
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.

Portanto, neste caso, atribuí corretamente o alias, mas no ON cláusula Referenciei o nome real da tabela em vez do alias.

A solução


Portanto, a solução é garantir que você atribuiu todos os aliases aos quais poderá fazer referência posteriormente na consulta e também certificar-se de usar esses aliases em vez do nome da tabela diretamente.

Então, se você for usar aliases, assim:
SELECT * FROM Cats c
INNER JOIN Dogs d
ON c.CatName = d.DogName;

Ou se você optar por não usar aliases, assim:
SELECT * FROM Cats
INNER JOIN Dogs
ON Cats.CatName = Dogs.DogName;