在这里,我正在做出租车分配模块,在这里我将解释我的要求,管理员分配驾驶室给员工在shift wise.this详细信息我存储在cab_allocation分配表。LEFT JOIN(连接两个表时加入查询不能正常工作)
cab_allocation(表名称)
allocationId cabId shiftTiming from_allocationDate to_allocationdate
1 CBX100 1 2017-08-10 2017-08-20
2 CBX100 2 2017-08-10 2017-08-20
3 CBX101 3 2017-08-10 2017-08-20
这里cabId CBX100具有两个分配和具有每天一次分配CBX101。在这之后,我想跟踪此行是发生与否,此跟踪的细节我存储在trip_details表
trip_details(表名)
tripId cabNo shiftId tripDate startTime endTime tripStatus
1 CBX100 1 2017-08-16 09:30:00 11:30:00 1
2 CBX100 2 2017-08-16 12.10.00 0
这里cabId CBX100已经完成了他shiftId 1,shiftId开始时间为09:30:00和结束时间11:30:00和tripStatus 1这意味着此行程是已完成。
下一页cabId CBX100已经开始第二换挡,开始时间为○○年十月十二日,但此行没有完成所以
下一页cabId CBX101还没有开始他的行程没有结束时间和tripstatus,所以没有条目是这张表,
现在我的预期结果是哪个旅行是不完整的我想在驾驶室分配的细节。这里cab_allocation表allocationId我使用trip_details表tripId forien键。
我试过这样
$sql = "SELECT a.allocationId, a.date, a.shiftTiming, a.cabId FROM cab_allocation as a INNER JOIN trip_details as b ON a.allocationId = b.tripId where b.tripStatus != '1' and b.tripDate != '".$date."' UNION SELECT a.allocationId, a.date, a.shiftTiming, a.cabId FROM cab_allocation as a LEFT JOIN trip_details as b ON a.allocationId = b.tripId where b.tripId IS NULL";
$mysql = mysql_query($sql);
$count =mysql_num_rows($mysql);
if($count > 0){
while ($row = mysql_fetch_assoc($mysql)) {
$data[] = $row;
}
$arrayName = array('status' => 'success', 'count' => $count, 'data' =>$data);
echo json_encode($arrayName);
} else {
$arrayName = array('status' => 'error', 'data' =>'Data not found');
echo json_encode($arrayName);
}
我得到的结果
{
"status": "success",
"count": 2,
"data": [
{
"allocationId": "2",
"date": "2017-08-12",
"shiftTiming": "2",
"cabId": "CBX100"
},
{
"allocationId": "3",
"date": "2017-08-12",
"shiftTiming": "3",
"cabId": "CBX101"
}
]
}
高达现在正是做工精细,在这之后我不得不增加一个条件是日期检查
cabId - > CBX100仅分配10天的时间段为2017-08-10 INTO 2017-08-20,这个详细信息在驾驶室分配表中,想想今天假设的日期2017-08-09意味着不应该显示驾驶室分配细节并假设今天是2017-08-21这个时间也不应该显示出租车分配的细节,这次我们必须显示{“status”:“error”,“data”:“Data not found”}
这种情况在这里我必须检查(比如如何在我的查询添加此条件)
@Nawin,请查看我的预期的结果,我没有得到我预期的效果,同时加入日期条件,如果知道意味着张贴你的答案 –
为什么ü正在联接到allocate_id和trip_id? –
@Moiz Arif,在分配表中,我存储了分配细节,比如这辆出租车(CBX100)被分配到这个班次(1)直到这个日期(2017-08-2017)。因此,他每天都必须完成他的旅程,所以此行完成的细节我在trip_details串table.that我是连接两个表在这里分配ID是TRIPID的trip_details –