无法绑定多部分标识符

Guy*_*ver -1 sql-server

我在不同的地方收到这个错误,我不知道为什么这样我想知道这里是否有人可能有任何线索.这是sql.

select Intranet.dbo.tblPeople.FirstName,
     Intranet.dbo.tblPeople.LastName,
     Intranet.dbo.tblPeople.CellPhone
     tblActivities.OnSiteSupervisorID,
     tblActivities.OffSiteSupervisorID,
     tblProjects.projectid,
     tblVehicleData.Description AS vehicle,
     tblVehicleData.VehicleID,
    tblVehicleData.ActivityID as ActivityID, 
     tblProjects.ProjectName,
     tblActivities.numPersons,
     tblActivities.Description,
     tblActivities.ChannelNumber,
     tblActivities.StartDate,
     tblActivities.EndDate,
     tblActivities.estimatedExitTime,
     tblLocations.locationname,
from Intranet.dbo.tblPeople,
     smartroadmangement.dbo.tblVehicleData,
     smartroadmangement.dbo.tblProjects,
     smartroadmangement.dbo.tblActivities 
left join smartroadmangement.dbo.tblLocations 
    on smartroadmangement.dbo.tblActivities.locationId = smartroadmangement.dbo.tblLocations.locationid
left join Intranet.dbo.tblPeople as people 
    on people.PersonID = smartroadmangement.dbo.tblActivities.OnSiteSupervisorID
left join tblActivities as Activities 
    on Activities.ActivityID = tblVehicleData.ActivityID
left join tblActivities as Activitiez 
    on Activitiez.ProjectID = tblProjects.ProjectID 
WHERE (smartroadmangement.dbo.tblActivities.StartDate Between '2012-07-15 14:17:09' and '2012-07-15 20:17:09') 
    AND (smartroadmangement.dbo.tblActivities.EndDate Between '2012-07-15 20:17:09'and '2012-07-15 23:17:09')
Run Code Online (Sandbox Code Playgroud)

Tar*_*ryn 5

我的第一个建议是在所有JOIN上使用正确的JOIN语法.您正在使用逗号和JOIN语法加入,这使得查询很难调试.

您的评论声明您收到错误:

left join tblActivities as Activities 
    on Activities.ActivityID = tblVehicleData.ActivityID
left join tblActivities as Activitiez 
    on Activitiez.ProjectID = tblProjects.ProjectID
Run Code Online (Sandbox Code Playgroud)

该表实际上smartroadmangement.dbo.tblActivities在您的查询中吗?

根据您在下面的评论,您可能想尝试:

left join smartroadmangement.dbo.tblActivities as Activities 
    on Activities.ActivityID = tblVehicleData.ActivityID
left join smartroadmangement.dbo.tblActivities as Activitiez 
    on Activitiez.ProjectID = tblProjects.ProjectID
Run Code Online (Sandbox Code Playgroud)

这是使用正确的JOIN语法更新的查询:

select ppl.FirstName,
     ppl.LastName,
     ppl.CellPhone
     a1.OnSiteSupervisorID,
     a1.OffSiteSupervisorID,
     tblProjects.projectid,
     v.Description AS vehicle,
     v.VehicleID,
     v.ActivityID as ActivityID, 
     tblProjects.ProjectName,
     a1.numPersons,
     a1.Description,
     a1.ChannelNumber,
     a1.StartDate,
     a1.EndDate,
     a1.estimatedExitTime,
     l.locationname,
from Intranet.dbo.tblPeople ppl
left join smartroadmangement.dbo.tblActivities a1
    on ppl.PersonID = a1.OnSiteSupervisorID
left join smartroadmangement.dbo.tblLocations l
    on a1.locationId = l.locationid 
left join smartroadmangement.dbo.tblVehicleData v
    on a1.ActivityID = v.ActivityID
left join smartroadmangement.dbo.tblProjects pj 
    on a1.ProjectID = pj.ProjectID 
WHERE (a1.StartDate Between '2012-07-15 14:17:09' and '2012-07-15 20:17:09') 
    AND (a1.EndDate Between '2012-07-15 20:17:09'and '2012-07-15 23:17:09')
Run Code Online (Sandbox Code Playgroud)