2014-12-10 2 views
1

이 SQL 쿼리를 가지고 있는데 Enter와 Exit Events의 값이 필요하므로 VehicleMonitoring Log Table에 두 번 가입해야합니다. 여기서 6은 입력하고 7은 Exit입니다.더블 내부 조인 - 잘못된 결과

문제는이 스크립트를 실행할 때 입력 시간이 항상 동일하다는 것입니다.

Select top 100 
    aEnter.iAssetId as AssetEnter, 
    aEnter.iAssetId as AssetExit, 
    vmEnter.dtUTCDateTime, 
    g.iGeofenceId, 
    g.sGeofenceName, 
    c.sCategoryName, 
    c.iCategoryId, 
    s.sSiteName, 
    s.iSiteId, 
    vmEnter.dtUTCDateTime as EnterTime, 
    vmExit.dtUTCDateTime as ExitTime 
    --, 
    --convert(char(8),dateadd(s,DATEDIFF(s,vmEnter.dtUTCDateTime, vmExit.dtUTCDateTime),'1900-1-1'),8) as Times 
From Sites s 
    Inner Join Categories c on s.iSiteId = c.iSiteId 
    Inner Join Assets aEnter on c.iCategoryId = aEnter.iCategoryId 
    Inner Join VehicleMonitoringLog vmEnter on vmEnter.iAssetId = aEnter.iAssetId and vmEnter.eEventCode = 6 
    Inner Join VehicleMonitoringLog vmExit on vmExit.iAssetId = aEnter.iAssetId and vmExit.eEventCode = 7 
    Inner Join Geofences g on g.iGeofenceId = vmEnter.iGeofenceId 

결합이 잘못 되었습니까?

enter image description here

+0

조인은 iAssetID에 있습니다. 귀하의 결과에 AssetEnter (iAssetId)가 모든 레코드에 대해 동일하게 표시되는 것처럼 보입니다. 따라서 입력 시간이 적절할 것으로 기대됩니다. –

+0

은 코드가 모든 출입 시간을 나열하는 것처럼 보입니다. 출구가 주어진 출품과 관련되어 있음을 어떻게 알 수 있습니까? – mrtig

+0

나는 mrtig에 동의한다. vehicleMonitoringLog의 두 별명 사이의 관계를 정의해야합니다. –

답변

3

난 당신이 자산 두 차량 테이블 사이의 십자가 제품을 믿습니다.

탑 100에서 멈추지 않았다면 잠시 후에 Entertime이 변경되고 잠시 동안 다시 동일하게 보일 것입니다.

두 개의 자산 테이블과 2 개의 VehiclMontioringLog 테이블이 필요합니다. 하나는 AssetEnter 용이고 다른 하나는 AssetExit 용입니다.

Select top 100 
aEnter.iAssetId as AssetEnter, 
aExit.iAssetId as AssetExit, 
vmEnter.dtUTCDateTime, 
g.iGeofenceId 

From Sites s 
Inner Join Categories c on s.iSiteId = c.iSiteId 
Inner Join Assets eEnter on c.iCategoryId = aEnter.iCategoryId 
Inner Join Assets aExit on c.iCategoryId = aExit.iCategoryId 
Inner Join VehicleMonitoringLog vmEnter on vmEnter.iAssetId = aEnter.iAssetId and vmEnter.eEventCode = 6 
Inner Join VehicleMonitoringLog vmExit on vmExit.iAssetId = aExit.iAssetId and vmExit.eEventCode = 7 
Inner Join Geofences g on g.iGeofenceId = vmEnter.iGeofenceId 
+0

자산 테이블과 VehicleMonitoring talbe를 두 번 가입시키는 방법은 무엇입니까? –

+0

@DawoodAwan 더 많이 이렇게하면 select 절도 변경해야합니다. – bowlturner