在这里我正在进行CAB分配模块,在这里我将解释我的要求,将CAB分配给Shift Wines中的员工。我存储在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 Table
的跟踪细节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 Trip已完成(TripStatus 1表示完成),而今天(2017-09-09)分配ID 1 Trip已开始但尚未完成(TripStatus 0表示未完成,例如正在进行的旅行)和今天(2017-09-09)(2017-09-09)分配2旅行似乎没有开始,因此Trip_details表中没有任何条目。
现在我想要的今天的howmany分配是我需要基于cab_allocation表的cabid中的详细信息,假设今天的旅行完成意味着旅行详细信息不应显示,假设今天的旅行未完成,则意味着我想要显示详细信息。<<<<<<<<<<<<<<<<<<<<<<<</p>
**我尝试过这样的**
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'
但是我找不到结果,但是根据我的表结构,我需要这样的输出
{
"status": "success",
"count": 2,
"data": [
{
"allocationId": "1",
"shiftTiming": "1",
},
{
"allocationId": "2",
"shiftTiming": "2",
}
]
}
我的更新代码
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'
首先,您不需要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'
从日期起,必须为