这里我正在进行驾驶室分配模块,在这里我将解释我的要求,管理员将轮椅分配给员工。我将这些详细信息存储在 cab_allocation 分配表中。
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已开始第二班,开始时间为12.10.00,但此行程未完成,因此没有结束时间和tripstatus
下一个cabId CBX101还没有开始他的行程,所以这个表没有条目,
现在我的预期结果是旅行是不完整的我想在出租车分配中详细说明。这里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,这个详细信息在cab分配表中,想想今天的日期2017-08-09意味着不应该显示出租车分配的详细信息,并假设今天的日期是2017-08-21,那时候也不应该显示出租车分配的详细信息,这次我们要显示{" status":" error" ,"数据":"未找到数据"}
这种情况我必须检查(比如如何在我的查询中添加此条件)
答案 0 :(得分:0)
检查并更新..
$date = "2017-08-16";
$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";