Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

SQL Server-Fehler 4104:Der mehrteilige Bezeichner konnte nicht gebunden werden.

Wenn Sie die Fehlermeldung „Der mehrteilige Bezeichner konnte nicht gebunden werden.“ erhalten, bedeutet dies normalerweise, dass Sie einer oder mehreren Spalten entweder eine Tabelle voranstellen, die nicht in Ihrer Abfrage enthalten ist, oder einen Alias die Sie eigentlich keinem Tisch zugeordnet haben.

Glücklicherweise zeigt Ihnen die Fehlermeldung, welche mehrteilige Kennung das Problem verursacht.

Beispiel

Hier ist ein Beispiel, um zu demonstrieren, wie man den Fehler bekommt.

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

Ergebnis:

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

In diesem Beispiel habe ich vergessen, einen Alias ​​für Cats einzufügen Tabelle.

Der Fehler tritt auch auf, wenn Sie versuchen, auf den Tabellennamen zu verweisen, nachdem Sie bereits einen Alias ​​angegeben haben.

So:

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

Ergebnis:

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

In diesem Fall habe ich also den Alias ​​richtig zugewiesen, aber im ON Klausel habe ich auf den tatsächlichen Tabellennamen statt auf den Alias ​​verwiesen.

Die Lösung

Die Lösung besteht also darin, sicherzustellen, dass Sie alle Aliase zugewiesen haben, auf die Sie später in der Abfrage verweisen könnten, und auch sicherzustellen, dass Sie diese Aliase anstelle des Tabellennamens direkt verwenden.

Wenn Sie also Aliase verwenden, gehen Sie wie folgt vor:

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

Oder wenn Sie keine Aliase verwenden möchten, so:

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