[英]How do I inner join 2 SQL tables, but only take the first result from the second table?
[英]How to take two counts result from second table using MySQL JOIN
这里我有两个表,( trip_details
和trip_member
),我的要求是基于tripId
。 我想获取员工在场人数和员工不在场人数。 在trip_member
表中,我存储tripId
( foriegnkey ), empId
和empPresentStatus
。 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.