这里我正在进行驾驶室分配模块,在这里我将解释我的要求,管理员将驾驶室分配给员工。我将这些详细信息存储在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)allocationId 1& 2行程已经完成(tripStatus 1表示已完成),今天(2017-09-09)allocationId 1行程已开始但尚未完成(tripStatus 0表示未完成,如正在进行的行程)和今天(2017-09-09) allocationId 2 trip似乎没有启动,所以trip_details表中没有条目。
现在我想要的意思是如何分配在那里我需要基于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'
答案 0 :(得分: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'
起始日期之前需要。