繁体   English   中英

如何使用MySQL JOIN从第二张表获取两个计数结果

[英]How to take two counts result from second table using MySQL JOIN

这里我有两个表,( trip_detailstrip_member ),我的要求是基于tripId 我想获取员工在场人数和员工不在场人数。 trip_member表中,我存储tripIdforiegnkey ), empIdempPresentStatus empPresentStatus= '1'表示他不在, empPresentStatus ='0'表示存在。

trip_details

tripId      allocationId       tripStatus

 1             1                  1
 2             1                  1

trip_member

id       tripId          empId       empPresentStatus

 1         1              G2E201        0
 2         1              G2E202        0
 3         1              G2E203        1
 4         2              G2E204        0
 5         2              G2E205        1

根据我的表结构,旅行中有多少员工以及旅行中有多少员工缺席,我想算一下。

我试过了

$mysql = mysql_query("SELECT a.tripId, a.cabNo, COUNT('b.*') AS absentCount FROM trip_details a LEFT JOIN trip_member b ON a.tripId = b.tripId WHERE b.empPresentStatus = '1' AND a.tripStatus ='1' GROUP BY a.tripId");
while ($row = mysql_fetch_assoc($mysql)) {
    $data[] = $row;
} // my requirement is based on tripId I want take the employee present count and emplyee absent count, in trip_member table I stored tripId (forienkey),empId,empPresentStatus.here come to know like empPresentStatus= '1' means he is absent, suppose empPresentStatus ='0' means is present.
$arrayName = array('status' => 'success', 'data' =>$data );
echo json_encode($arrayName);

我得到的输出

{
"status": "success",
"data": [
    {
        "tripId": "1",
        "cabNo": "CBX100",
        "absentCount": "1"
    },
    {
        "tripId": "2",
        "cabNo": "CBX101",
        "absentCount": "1"
    }
]
}

到现在为止还可以。 我想计算一下旅途中有多少名员工。 如果有人知道,请更新我的答案,我不会计算这个数字。

预期成绩

{
"status": "success",
"data": [
    {
        "tripId": "1",
        "cabNo": "CBX100",
        "absentCount": "1",
        "presentCount": "2"
    },
    {
        "tripId": "2",
        "cabNo": "CBX101",
        "absentCount": "1",
        "presentCount": "1"
    }
]
}

更新表(cab_allocation)

allocationId     shiftTiming        routeId     cabId
  1                 1                  1        CBX100
  2                 1                  1        CBX101

您可以在其中使用子查询。

Change your query with this one.

"SELECT a.tripId, a.cabNo, (select count(*) from trip_member as m WHERE m.tripId=a.tripId and m.empPresentStatus = '1') as presentcount,(select count(*) from trip_member as m WHERE m.tripId=a.tripId and m.empPresentStatus = '0') as absentcount FROM trip_details a WHERE a.tripStatus ='1' GROUP BY a.tripId"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM