2013-05-13 80 views
-2

在我的SQL查询,我得到的错误:获得多部分的标识符错误在SQL查询

The multi-part identifier "a.Position_ID" could not be bound.

我不知道什么导致它。谁能帮忙?

谢谢。

select distinct 
    a.HireLastName, a.HireFirstName, a.HireID, a.Position_ID, a.BarNumber, 
    a.Archived, a.DateArchived, b.Position_Name 
from NewHire a, WorkPeriod c 
join Position b on a.Position_ID = b.Position_ID 
where 
    a.Archived = 0 
    and a.HireID = c.HireID 
    and c.InquiryID is not null 
order by 
    a.HireID DESC, a.HireLastName, a.HireFirstName 
+0

你确定Location_ID存在于'NewHire'吗? – imthepitts 2013-05-13 20:06:31

+2

连接顺序不一定按照您编写的顺序执行。当您将不正确的旧式隐式联接与正确的显式联接混合时,这尤其成问题。尝试使用JOIN而不是a和b之间的逗号,并将a = c条件移动到on子句。 – 2013-05-13 20:06:32

+0

@imthepitts这不是问题。问题是当'b'和'c'之间的连接尝试时'a'不存在。否则,它会说'无效列'。 – 2013-05-13 20:06:51

回答

1

您的代码不会连接表c,我认为这可能会导致您的别名问题。你可以试试这个:

select distinct 
    a.HireLastName, 
    a.HireFirstName, 
    a.HireID, 
    a.Position_ID, 
    a.BarNumber, 
    a.Archived, 
    a.DateArchived, 
    b.Position_Name 
from NewHire a 
join Position b on a.Position_ID = b.Position_ID 
join WorkPeriod c on a.hireID = c.HireID 
where a.Archived = 0 and c.InquiryID is not null 
order by a.HireID DESC, a.HireLastName, a.HireFirstName