-1

さまざまな場所でこのエラーが発生していますが、その理由がわからないので、ここに誰か手がかりがあるのではないかと思っていました. これが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')
4

2 に答える 2

5

私の最初の提案は、すべての JOIN で適切な JOIN 構文を使用することです。コンマと JOIN 構文を使用して参加しているため、クエリのデバッグが困難です。

あなたのコメントは、ここでエラーが発生していると述べています:

left join tblActivities as Activities 
    on Activities.ActivityID = tblVehicleData.ActivityID
left join tblActivities as Activitiez 
    on Activitiez.ProjectID = tblProjects.ProjectID

そのテーブルは実際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

適切な 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')
于 2012-07-30T20:51:19.967 に答える
0

4 部構成の名前を使用しています。smartroadmangement という名前のリンク サーバー/エイリアスが設定されていますか?

于 2012-07-30T20:48:39.073 に答える