【发布时间】:2017-08-16 10:33:28
【问题描述】:
我在这里做出租车分配模块,在这里我将解释我的要求,管理员按班次将出租车分配给员工。这个细节我存储在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,但是这次行程没有完成所以没有结束时间和行程状态
下一个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,驾驶室分配表中的这个细节,想像假设今天日期2017-08-09意味着不应该显示驾驶室分配细节并且假设今天日期是2017-08-21那个时间也不应该显示驾驶室分配细节,这次我们必须显示 {"status":"error","data":"Data not found"}
我必须检查的这个条件(比如如何在我的查询中添加这个条件)
【问题讨论】:
-
@Nawin,请检查我的预期结果,添加日期条件时我没有得到预期结果,如果知道意味着发布您的答案
-
你为什么要加入 allocate_id 和 trip_id?
-
@Moiz Arif,在分配表中,我存储了分配详细信息,例如,截至该日期(2017-08-2017),这辆出租车(CBX100)被分配到这个班次(1)。所以他每天必须完成他的旅行,所以这次旅行完成细节我是trip_details表中的字符串。我在这里加入两个表分配id是trip_details中tripId的外键
-
在 cabId 和 canNo 上进行左连接,它会起作用
-
@Moiz Arif 请更新你的答案