Nếu bạn gặp lỗi khi cho bạn biết rằng “Không thể liên kết số nhận dạng nhiều phần.”, Điều đó thường có nghĩa là bạn đang đặt trước một hoặc nhiều cột bằng một bảng không có trong truy vấn của bạn hoặc một bí danh mà bạn chưa thực sự gán cho một bảng.
May mắn thay, thông báo lỗi cho bạn biết số nhận dạng nhiều phần nào đang gây ra sự cố.
Ví dụ
Dưới đây là một ví dụ để minh họa cách sửa lỗi.
SELECT * FROM Cats
INNER JOIN Dogs d
ON c.CatName = d.DogName;
Kết quả:
Msg 4104, Level 16, State 1, Line 3 The multi-part identifier "c.CatName" could not be bound.
Trong ví dụ này, tôi quên thêm bí danh cho Mèo bảng.
Lỗi cũng sẽ xảy ra nếu bạn cố gắng tham chiếu tên bảng sau khi bạn đã cung cấp bí danh.
Như thế này:
SELECT * FROM Cats c
INNER JOIN Dogs d
ON Cats.CatName = d.DogName;
Kết quả:
Msg 4104, Level 16, State 1, Line 3 The multi-part identifier "Cats.CatName" could not be bound.
Vì vậy, trong trường hợp này, tôi đã chỉ định chính xác bí danh, nhưng trong ON
mệnh đề Tôi đã tham chiếu đến tên bảng thực tế thay vì bí danh.
Giải pháp
Vì vậy, giải pháp là đảm bảo bạn đã chỉ định tất cả các bí danh mà bạn có thể tham chiếu sau này trong truy vấn và cũng để đảm bảo bạn sử dụng các bí danh đó thay vì trực tiếp tên bảng.
Vì vậy, nếu bạn định sử dụng bí danh, như sau:
SELECT * FROM Cats c
INNER JOIN Dogs d
ON c.CatName = d.DogName;
Hoặc nếu bạn chọn không sử dụng bí danh, như sau:
SELECT * FROM Cats
INNER JOIN Dogs
ON Cats.CatName = Dogs.DogName;