Hvis du får en fejl, der fortæller dig, at "Den flerdelte identifikator kunne ikke bindes.", betyder det normalt, at du forudsætter en eller flere kolonner med enten en tabel, der ikke er inkluderet i din forespørgsel, eller et alias som du faktisk ikke har tildelt en tabel.
Heldigvis viser fejlmeddelelsen dig, hvilken multi-part identifikator der forårsager problemet.
Eksempel
Her er et eksempel for at demonstrere, hvordan du får fejlen.
SELECT * FROM Cats
INNER JOIN Dogs d
ON c.CatName = d.DogName;
Resultat:
Msg 4104, Level 16, State 1, Line 3 The multi-part identifier "c.CatName" could not be bound.
I dette eksempel glemmer jeg at inkludere et alias for Kattene tabel.
Fejlen vil også opstå, hvis du forsøger at henvise til tabelnavnet, efter at du allerede har angivet et alias.
Sådan:
SELECT * FROM Cats c
INNER JOIN Dogs d
ON Cats.CatName = d.DogName;
Resultat:
Msg 4104, Level 16, State 1, Line 3 The multi-part identifier "Cats.CatName" could not be bound.
Så i dette tilfælde tildelte jeg aliaset korrekt, men i ON
klausul Jeg refererede til det faktiske tabelnavn i stedet for aliaset.
Løsningen
Så løsningen er at sikre, at du har tildelt alle aliasser, som du muligvis refererer til senere i forespørgslen, og også at sikre, at du bruger disse aliaser i stedet for tabelnavnet direkte.
Så hvis du vil bruge aliaser, som dette:
SELECT * FROM Cats c
INNER JOIN Dogs d
ON c.CatName = d.DogName;
Eller hvis du vælger ikke at bruge aliaser, som dette:
SELECT * FROM Cats
INNER JOIN Dogs
ON Cats.CatName = Dogs.DogName;