2017-09-09 3 views
2

여기 내가 택시 할당 모듈을하고 있는데 여기 내 요구 사항을 설명 할 것이고, 관리자는 택시를 근무자에게 할당합니다.이 세부 정보는 cab_allocation 할당 테이블에 저장되어 있습니다.왼쪽 열 두 열 사이의 날짜를 비교할 때 작동하지 않습니다

cab_allocation (테이블 이름)이 후

allocationId  from_allocationDate  to_allocationdate  cabId shiftTiming 

1     2017-09-08     2017-09-30    CBX100  1 
2     2017-09-08     2017-09-30    CBX100  2 

내가이 여행은 내가 trip_details 테이블에 저장이 추적 자세한 내용은 매일 발생되지 않았거나 추적 할

trip_details (테이블 이름)

id  allocationId tripDate startTime endTime  tripStatus 

1    1  2017-09-08 09:30:00 11:30:00  1 
2    2  2017-09-08 12.10.00 02:30:00  1 
3    1  2017-09-09 12.10.00     0 

어제 (2017-09-08) 할당 번호 1 & 2 개의 여행이 완료되고 (tripStatus 1이 완료 됨) 오늘 (2017-09-09) 할당 1 개의 여행이 시작되었지만 아직 완료되지 않았습니다 (tripStatus 0은 완료되지 않았 음을 의미하고, 진행중인 여행과 같이) 오늘 (2017-09-09) allocationId 2 번 여행으로 시작되지 않은 것 같아서 trip_details 테이블에 항목이 없습니다.

지금 내가 원하는 할당 내가 cab_allocation 테이블에서 세부 사항을 기반으로 cabId, 그 여행이 완료한다고 가정 오늘 여행 세부 내가 표시하고자한다고 가정 오늘 여행이 완료되지 않은 수단을 표시하지 않아야 의미 필요가있다 howmany 오늘을 의미 세부. 내가이

{ 
"status": "success", 
"count": 2, 
"data": [ 
    { 
     "allocationId": "1", 
     "shiftTiming": "1", 
    }, 
    { 
     "allocationId": "2", 
     "shiftTiming": "2", 
    } 
] 
} 

같은 출력을 필요

는 ** 내가 **

SELECT a.allocationId, a.shiftTiming, a.cabId 
FROM cab_allocation a 
LEFT JOIN trip_details b ON a.allocationId = b.allocationId 
WHERE a.cabId='CBX100' AND b.tripStatus != '1' AND a.from_allocationDate >= '2017-09-09' AND a.to_allocationdate <= '2017-09-09' 

이 같은 노력하지만 난 결과가 없습니다 받고 있어요,하지만 내 테이블 구조에 따라 내 업데이트 코드

SELECT a.allocationId, a.date, a.shiftTiming, a.cabId 
FROM cab_allocation a 
LEFT JOIN trip_details b ON a.allocationId = b.allocationId 
WHERE a.cabId='CBX100' AND b.tripStatus != '1' AND a.from_allocationDate <= '2017-09-09' AND 
    a.to_allocationdate >= '2017-09-09' 
+0

샘플 데이터와 쿼리에는 다른 열이 있습니다. –

+0

@ Gordon Linoff, 내 질문과 샘플 데이터가 동일하다는 것을 지금 확인하십시오 –

+0

하나가 있습니까? 지식에 따라 나는 오늘 할당 ID 2 여행 자체가 시작되지 않았다고 생각하고 있습니다. 그래서이 할당 id 2에 대한 세부 사항, 우리가이 문제를 해결할 수있는 방법이 있기 때문에 trip_details에 항목이 없습니다 –

답변

0

먼저, left join을 원하지 않습니다. inner join을 사용하십시오. 귀하의 의도는 필터링을하는 것입니다.

둘째, 당신의 where 절은 다음과 같습니다

WHERE a.cabId='CBX100' AND b.tripStatus <> '1' AND 
     a.from_allocationDate >= '2017-09-09' AND 
     a.to_allocationdate <= '2017-09-09' 

당신은 뒤로 날짜에 조건을 가지고있다. 당신이 원하는 :

WHERE a.cabId='CBX100' AND b.tripStatus <> '1' AND 
     a.from_allocationDate <= '2017-09-09' AND 
     a.to_allocationdate >= '2017-09-09' 

은 날짜로부터 현재까지 전과 을 할 필요가있다.

+0

@ 귀하의 코드를 시도했지만 결과가 나타납니다, MySQL은 빈 결과 집합 (예 : 0 행)을 반환했습니다 –

+0

SELECT a.allocationId, a.date, a.shiftTiming, a.cabId FROM cab_allocation INNER JOIN trip_details b ON a.allocationId = b.allocationId 여기서 a.cabId = 'CBX100'AND b.tripStatus <> '1'AND a.from_allocationDate> = '2017-09-09'AND a.to_allocationdate <= '2017-09 -09 ' –

+0

이 SQL 쿼리를 시도했지만 빈 결과가 표시되면이 코드를 테스트하여 문제가없는 것입니까? –