在这里,我正在做出租车分配模块,在这里我将解释我的要求,管理员按班次分配出租车给员工。此详细信息存储在cab_allocation分配表中。


  cab_allocation(表名称)


allocationId                date                  cabId    shiftTiming

1                         2017-08-12              CBX100     1
2                         2017-08-12              CBX100     2
3                         2017-08-12              CBX101     3


在此,cabId CBX100每天分配两次,而CBX101每天分配一次。在此之后,我想跟踪这次旅行是否发生,对于此跟踪详细信息,我将其存储在trip_details表中


  trip_details(表名)


tripId    cabNo    shiftId   tripDate   startTime   endTime    tripStatus

 1       CBX100      1       2017-08-12  09:30:00    11:30:00       1
 2       CBX100      2       2017-08-12  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表分配ID我正在使用外键trip_details表tripId。


  我尝试过但是我没有得到确切的结果,因为CBX101 cabId尚未开始旅行,所以trip_details表中没有条目,因此我无法获取详细信息。


我试过这样

    $sql = "SELECT * FROM `cab_allocation` a INNER JOIN trip_details b ON a.allocationId=b.tripId WHERE b.tripStatus !='1'";
  $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": 1,
"data": [
    {
        "allocationId": "2",
        "date": "2017-08-12",
        "shiftTiming": "2",
        "routeId": "1",
        "cabId": "CBX100",
        "tripId": "2",
        "cabNo": "CBX100",
        "driverId": "G2E100",
        "shiftId": "2",
        "tripDate": "",
        "startTime": "12.10.0",
        "endTime": "",
        "tripStatus": "0"
    }
]


}

预期成绩

{
"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",
    },
]
}

最佳答案

正确的SQL将是:

    SELECT a.allocationId, a.date, a.shiftTiming, a.cabId
      FROM cab_allocation a
LEFT JOIN trip_details b
        ON a.allocationId = b.tripId
     WHERE b.tripStatus !='1'


LEFT JOIN将匹配不在trip_details上的cab_allocation上的记录

08-06 19:18